반응형

문제풀이

30의 배수가 될 조건은 아래와 같다.

1. 0이 한개 이상 들어가야한다.

2. 모든 수의 합이 3의 배수여야한다.(1230 이면, 1230의 합은 1+2+3+0 = 6)

 

1. collections.Counter 를 이용하여 받은 숫자들을 한자리씩 잘라 센다.(위의 조건2를 위한 과정)

2. 1에서 센 딕셔너리의 key*value 의 합이 3의 배수인지 확인한다.(조건2)

3. 조건1, 2를 만족한다면 숫자들을 큰 수부터 붙여나간다.

 

Python Code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import sys,collections
 
def sol(n):
    dic = collections.Counter(n)
    check = sum(int(k)*for k,v in dic.items())
    if "0" not in dic or check%3!=0:
        return -1
    else :
        ans = ""
        for i in range(9,-1,-1):
            str_i = str(i)
            if str_i in dic :
                for _ in range(dic[str_i]):
                    ans += str_i
        return ans
 
if __name__ == "__main__":
    n=sys.stdin.readline().split()[0]
    print(sol(n))
cs

Line 4 : 주어진 숫자를 하나씩 잘라 개수를 센다.

Line 5 : 숫자들의 합을 계산한다.

Line 6 : 조건 1 만족 여부를 확인한다.

Line 8 : 조건1, 2를 모두 만족한 경우로 큰 숫자부터(9부터) 붙여나간다.

문제 링크

 

10610번: 30

문제 어느 날, 미르코는 우연히 길거리에서 양수 N을 보았다. 미르코는 30이란 수를 존경하기 때문에, 그는 길거리에서 찾은 수에 포함된 숫자들을 섞어 30의 배수가 되는 가장 큰 수를 만들고 싶어한다. 미르코를 도와 그가 만들고 싶어하는 수를 계산하는 프로그램을 작성하라. 입력 N을 입력받는다. N는 최대 105개의 숫자로 구성되어 있으며, 0으로 시작하지 않는다. 출력 미르코가 만들고 싶어하는 수가 존재한다면 그 수를 출력하라. 그 수가 존재하지 않는

www.acmicpc.net

 

반응형

'알고리즘 > 백준' 카테고리의 다른 글

백준 1002 터렛  (0) 2020.04.09
백준 11048 이동하기  (0) 2020.03.30
백준 2436 공약수  (0) 2020.03.24
백준 2559 수열  (0) 2020.03.23
백준 1058 친구  (0) 2020.03.19
반응형

2011 정보올림피아드 초등부 2번 문제이다.

문제 풀이

 주어진 두 수를 a, b, 두 수의 최대공약수를 g, 최소공배수를 l이라 하면, a, b, g, l의 관계는 다음과 같다.

 $A = \frac{a}{g}$

 $B = \frac{b}{g}$

 $l = g \times A \times B$

 위의 관계를 이용하면 $B$는 다음과 같이 쓸 수 있다.

 $B = \frac{l}{g \times A}$

 따라서, 가능한 A에 대하여 B를 구하고 A와 B가 서로소인지 확인하면 된다.

Python Code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import sys, math
def gcd(a, b):
  while (b != 0):
    temp = a % b
    a = b
    b = temp
  return abs(a)
def solution(g,l):
    ans = (l,l)
    temp = (0,0)
    for A in range(math.ceil(math.sqrt(l//g)),0,-1):
      if l%(g*A) == 0:
        B = l//(g*A)
        temp = (A*g,B*g)
        if gcd(A,B) == 1 and sum(temp) < sum(ans):
          ans = temp
                
    print(min(ans),max(ans))
if __name__ == "__main__":
    g,l = map(int,sys.stdin.readline().split())
    solution(g,l)
cs

Line 11 : 가능한 A에 대하여

Line 13 : B를 구하고

Line 15 : A와 B가 서로소인지 확인한다.

 

For 문 (가능한 A)의 범위에 대하여

 첫번째 풀이에서는 for문을 아래와 같이 작성하였고, 3784 ms가 걸렸다. 통과 후, 다른 사람들의 기록을 보니 52ms로 약 60배가 빨라서 뭔가 확인해보니 for문의 범위가 문제였다.

 아래의 풀이의 경우에는 A를 1부터 l//g 까지 모든 A, B 쌍에 대하여 계산하였는데, 위의 a, b, g, l의 관계를 이용하면 A와 B가 같을 때, 즉 $A^2 = \frac{l}{g}$ 인 경우가 산술기하평균으로부터 합이 가장 작은 A, B 쌍인 것을 알 수 있으므로, A를 $\sqrt{\frac{l}{g}}$ 부터 1씩 내리며 만족하는 A와 B를 찾으면 바로 리턴하는 것이 최적해 임을 알 수 있다. 위의 풀이의 경우 60 ms가 걸렸다.

1
2
3
4
5
6
7
8
9
def solution(g,l):
    ans = (l,l)
    for A in range(1,l//g+1):
        if l%(A*g) == 0:
            a = A*g
            B = l//(A*g)
            b = B*g
            if gcd(A,B) == 1 and a+< sum(ans):
                ans = (a,b)
cs

문제 링크

 

2436번: 공약수

첫째 줄에 두 개의 자연수가 빈칸을 사이에 두고 주어진다. 첫 번째 수는 어떤 두 개의 자연수의 최대공약수이고, 두 번째 수는 그 자연수들의 최소공배수이다. 입력되는 두 자연수는 2 이상 100,000,000 이하이다.

www.acmicpc.net

 

반응형

'알고리즘 > 백준' 카테고리의 다른 글

백준 11048 이동하기  (0) 2020.03.30
백준 10610 30  (0) 2020.03.28
백준 2559 수열  (0) 2020.03.23
백준 1058 친구  (0) 2020.03.19
백준 2469 사다리 타기  (0) 2020.03.19
반응형

2011 정보올림피아드 초등부 1번문제이다.

문제풀이

 수열의 연속된 요소들의 합 중 가장 큰 값을 찾는 문제로, 수열을 t라 하면 sum(t[i:i+k])의 최댓값을 구하면 된다.

 1. sum(t[0:k])를 먼저 구한다.

 2. for 문을 k부터 n까지 가며, for 문의 변수가 i라 하면 1의 값에서 t[i]를 더하고 t[i-k]를 빼준다. 이렇게 하면 sum(t[i+k])가 된다.

 3. 2의 값과 1의 값을 비교해 가며 가장 큰 값을 가지고 있다가 for문이 끝나면 반환해준다.

 

시간 복잡도는 수열의 길이만큼의 for문 한번으로 끝나므로, 수열의 길이를 N이라 하면 O(N)이 된다.

주의해야 할 예제로는 n == k인 경우와, 정답이 음수인 경우 정도이다(처음에 ans를 0으로 초기화했다가 틀렸다).

Python Code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import sys
def solve(n,k,t):
    temp = sum(t[:k])
    ans = temp
    for i in range(k,n):
        temp += t[i]
        temp -= t[i-k]
        if temp > ans:
            ans = temp
    return ans if n != k else temp
if __name__ == "__main__":
    n, k = map(int,sys.stdin.readline().split())
    t = list(map(int,sys.stdin.readline().split()))
    print(solve(n,k,t))
cs

 

문제 링크

 

2559번: 수열

첫째 줄에는 두 개의 정수 N과 K가 한 개의 공백을 사이에 두고 순서대로 주어진다. 첫 번째 정수 N은 온도를 측정한 전체 날짜의 수이다. N은 2 이상 100,000 이하이다. 두 번째 정수 K는 합을 구하기 위한 연속적인 날짜의 수이다. K는 1과 N 사이의 정수이다. 둘째 줄에는 매일 측정한 온도를 나타내는 N개의 정수가 빈칸을 사이에 두고 주어진다. 이 수들은 모두 -100 이상 100 이하이다. 

www.acmicpc.net

 

반응형

'알고리즘 > 백준' 카테고리의 다른 글

백준 10610 30  (0) 2020.03.28
백준 2436 공약수  (0) 2020.03.24
백준 1058 친구  (0) 2020.03.19
백준 2469 사다리 타기  (0) 2020.03.19
백준 2468 안전 영역  (0) 2020.03.17
반응형

친구 또는 친구의 친구 수가 가장 많은 사람을 찾는 문제이다.

문제 풀이

 모든 사람의 친구들을 저장하기 위해 set 자료구조를 사용하였으며, key가 integer(사람의 번호), value가 set(친구들의 목록)인 딕셔너리를 사용하였다.

 1. N번째 줄에 N번째 사람과 친구인 사람들의 목록이 나오므로, N번째 줄에서 요소가 'Y'인 인덱스 M을 key가 N인 set에 넣는다. 또한, Undirected graph이므로 key가 M인 set에 N을 넣는 과정 역시 필요하다. (M은 N의 친구, N은 M의 친구)

 2. 또한 N의 친구들끼리도 서로 2-친구이다. N의 친구를 M1, M2라 하면, M1과 M2는 N을 매개로 한 2-친구가 된다. 따라서 key가 M1인 set에 M2를 넣고, 반대과정 역시 진행해 준다.

 3. 딕셔너리에서 value의 길이가 가장 큰 key를 반환한다.

Python Code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
import sys
 
n=int(sys.stdin.readline())
dic = {}
for i in range(n):
    f_list = sys.stdin.readline()
    f_idx = [j for j in range(n) if f_list[j]=='Y']
    for f in f_idx:
        #직접친구
        if i in dic:
            temp = dic[i]
            temp.add(f)
        else :
            temp = set()
            temp.add(f)
        dic[i]=temp
        if f in dic:
            temp = dic[f]
            temp.add(i)
        else :
            temp = set()
            temp.add(i)
        dic[f]=temp
        # 친구의 친구
        f_set = dic[f]
        for f2 in f_idx:
            if f==f2: continue
            f_set.add(f2)
            if f2 in dic:
                temp = dic[f2]
                temp.add(f)
            else :
                temp = set()
                temp.add(f)
            dic[f2] = temp
ans = 0
for v in dic.values():
    if len(v)>ans:
        ans = len(v)
print(ans)
cs

Line 10 ~ 12 : dic[N]에 M을 넣는 과정 (M은 N의 친구)

Line 17 ~ 22 : dic[M]에 N을 넣는 과정 (N은 M의 친구)

Line 29 ~ 35 : N의 친구들끼리 서로 친구로 넣어주는 과정

 

문제 링크

 

1058번: 친구

지민이는 세계에서 가장 유명한 사람이 누구인지 궁금해졌다. 가장 유명한 사람을 구하는 방법은 각 사람의 2-친구를 구하면 된다. 어떤 사람 A가 또다른 사람 B의 2-친구가 되기 위해선, 두 사람이 친구이거나, A와 친구이고, B와 친구인 C가 존재해야 된다. 여기서 가장 유명한 사람은 2-친구의 수가 가장 많은 사람이다. 가장 유명한 사람의 2-친구의 수를 출력하는 프로그램을 작성하시오. A와 B가 친구면, B와 A도 친구이고, A와 A는 친구가 아니다

www.acmicpc.net

 

반응형

'알고리즘 > 백준' 카테고리의 다른 글

백준 2436 공약수  (0) 2020.03.24
백준 2559 수열  (0) 2020.03.23
백준 2469 사다리 타기  (0) 2020.03.19
백준 2468 안전 영역  (0) 2020.03.17
백준 2467 용액  (0) 2020.03.12
반응형

2010 정보올림피아드 초등부 마지막 문제이다.

문제 풀이

1. A부터 순서대로 k개의 알파벳의 배열을 만든다.

2. ?로 시작하는 사다리가 나올 때 까지 1에서 만든 배열을 주어진 사다리에 따라 바꾸어 나간다.

3. ?로 시작하는 사다리를 만나면 그 이후의 사다리들을 배열에 넣고 뒤집어 준다.

4. 정답 배열을 3의 배열에서 순서대로 꺼내며 사다리에 맞게 정답 배열을 바꾸어 나간다.(3에서 뒤집에 주었으므로 정답 배열은 가장 밑의 사다리부터 따라가게 된다.)

5. 1의 배열과 4의 배열을 비교하여 적절한 사다리 모양을 만든다.

 

Python Code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
import string, sys
al = string.ascii_uppercase
k=int(sys.stdin.readline())
n=int(sys.stdin.readline())
al = list(al[:k])
answer = list(sys.stdin.readline()[:-1])
def swap(i):
    temp = al[i]
    al[i] = al[i+1]
    al[i+1= temp
 
def swap2(i):
    temp = answer[i]
    answer[i] = answer[i+1]
    answer[i+1= temp
 
for i in range(n):
    ladder = sys.stdin.readline().split()[0]
    if ladder[0== "?":
        break
    else:
        for idx,l in enumerate(ladder):
            if l =="-":
                swap(idx)
 
rest = [sys.stdin.readline().split()[0for _ in range(i+1,n)]
rest.reverse()
for ladder in rest:
    for idx,l in enumerate(ladder):
        if l =="-":
            swap2(idx)
ans = ""
 
for i in range(k-1):
    if al[i] == answer[i]:
        ans += "*"
    elif al[i] == answer[i+1and al[i+1]==answer[i] and (i==0 or ans[-1== "*"):
        ans += "-"
        swap(i)
    else:
        ans = "x" * (k-1)
        break
print(ans)
cs

line 5의 al이 과정 1의 배열이다.

line 6의 answer가 과정4의 정답 배열이다.

swap 함수는 al을 사다리에 따라 바꿔주며, swap2는 answer를 바꿔준다.

line 17의 for 문이 과정 2이며, line26의 rest배열이 과정 3의 ?이후의 사다리 배열이다.

line 28의 for 문이 과정 4이다.

line 34가 마지막 과정 5 이다.

37 line의 마지막 조건의 경우, 사다리가 연속으로 이어진 경우는 없다는 조건을 구현한 것이다.

 

문제 링크

 

2469번: 사다리 타기

첫 줄에는 참가한 사람의 수 k가 나온다(3≤k≤26). 그 다음 줄에는 가로 막대가 놓일 전체 가로 줄의 수를 나타내는 n이 나온다(3≤n≤1,000). 그리고 세 번째 줄에는 사다리를 타고 난 후 결정된 참가자들의 최종 순서가 길이 k인 대문자 문자열로 들어온다.   k와 n, 그리고 도착순서 문자열이 나타난 다음, 이어지는 n개의 줄에는 앞서 설명한 바와 같이 ‘*’와 ‘-’ 문자로 이루어진 길이 k-1인 문자열이 주어진다. 그 중 감추어진 가로 줄

www.acmicpc.net

 

반응형

'알고리즘 > 백준' 카테고리의 다른 글

백준 2559 수열  (0) 2020.03.23
백준 1058 친구  (0) 2020.03.19
백준 2468 안전 영역  (0) 2020.03.17
백준 2467 용액  (0) 2020.03.12
백준 1300 K번째 수  (0) 2020.03.11
반응형

유형 : bfs

 

저번 문제에 이어서 2010 한국정보올림피아드 초등부 문제이다.

문제풀이

 bfs(Floodfill) 알고리즘을 이용하여 섬의 개수를 찾는 문제이다.

 

1. 먼저 기준 높이를 정하고, 지역의 높이가 기준 높이보다 높다면 0 아니면 1이 되도록 visit 배열을 초기화한다.

2. (0,0)부터 visit[row][col]이 0인 값을 찾고 그 row, col 값을 기준으로 bfs를 한다. 여기서 방문되는 곳들이 1개의 영역을 형성한다.

3. 2의 과정을 기준높이가 1부터 (지역 높이의 최댓값)-1 까지 반복한다. (기준높이 = 지역높이의 최댓값 같은 경우의 영역의 개수는 0개일 것이므로)

 

Python Code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
import collections,sys
 
def bfs(r,c):
    q=collections.deque()
    q.append((r,c))
    while q:
        r,c = q.popleft()
        if r>0 and visit[r-1][c] == 0:
            q.append((r-1,c))
            visit[r-1][c]=1
        if r<n-1 and visit[r+1][c] == 0:
            q.append((r+1,c))
            visit[r+1][c] = 1
        if c>0 and visit[r][c-1== 0 :
            q.append((r,c-1))
            visit[r][c-1= 1
        if c<n-1 and visit[r][c+1== 0:
            q.append((r,c+1))
            visit[r][c+1= 1
 
def getArea(height):
    global visit
    visit = [[0 if maps[r][c] > height else 1 for c in range(n)] for r in range(n)]
    area = 0
    for r in range(n):
        for c in range(n):
            #print(r,c)
            if visit[r][c] == 0 :
                bfs(r,c)
                area+=1
    return area
 
def solution(maps,maxHeight):
    ans = 0
    for i in range(maxHeight):
        temp = getArea(i)
        if temp > ans:
            ans = temp 
    print(ans)
 
if __name__=="__main__":
    n = int(sys.stdin.readline())
    maps = []
    maxHeight = 0
    for _ in range(n):
        temp = list(map(int,sys.stdin.readline().split()))
        tempMax = max(temp)
        maps.append(temp)
        if tempMax>maxHeight:
            maxHeight = tempMax 
    solution(maps,maxHeight)
cs

42 line ~ 에서 입력값을 받는다.

solution 함수에서 3의 과정을 진행한다.

bfs 함수는 말 그대로 과정 2의 bfs를 하는 과정이다.(한개의 영역을 찾는다.)

getArea 함수의 경우에는 visit 함수를 초기화하고 영역의 총 개수를 센다.

 

호출 순서는 아래에서부터가 된다. main(입력값을 받는다) > solution(기준 높이를 설정한다) > getArea(visit 배열을 초기화하고 영역의 총 개수를 센다) > bfs(각 지점을 포함하는 영역을 구한다)

 

시간복잡도는 O(N^2*최대높이)가 된다.

높이가 2인 경우, 높이가 1인 경우의 영역을 참고하면 시간복잡도를 더 줄일 수 있을 것이다. 지금의 풀이의 경우, 높이가 2인 경우, 높이가 1인 경우를 참고하지 않고 처음부터 풀이를 하게 된다.

문제링크

 

2468번: 안전 영역

재난방재청에서는 많은 비가 내리는 장마철에 대비해서 다음과 같은 일을 계획하고 있다. 먼저 어떤 지역의 높이 정보를 파악한다. 그 다음에 그 지역에 많은 비가 내렸을 때 물에 잠기지 않는 안전한 영역이 최대로 몇 개가 만들어 지는 지를 조사하려고 한다. 이때, 문제를 간단하게 하기 위하여, 장마철에 내리는 비의 양에 따라 일정한 높이 이하의 모든 지점은 물에 잠긴다고 가정한다. 어떤 지역의 높이 정보는 행과 열의 크기가 각각 N인 2차원 배열 형태로 주어

www.acmicpc.net

 

반응형

'알고리즘 > 백준' 카테고리의 다른 글

백준 1058 친구  (0) 2020.03.19
백준 2469 사다리 타기  (0) 2020.03.19
백준 2467 용액  (0) 2020.03.12
백준 1300 K번째 수  (0) 2020.03.11
백준 17214 다항 함수의 적분  (0) 2020.03.10
반응형

유형 : 투포인터 알고리즘

 

올림피아드 초등부 1번문제

 

문제풀이

 이미 정렬된 배열이 들어온다는 것을 이용한다.

1. 두 포인터 l과 r에 맨 첫 요소와 마지막 요소의 주소를 넣는다.

2-1. l과 r의 합이 양수일 경우에는 r이 더 작아져야하므로 r을 하나 앞으로 옮겨준다.

2-2. l과 r의 합이 음수을 경우에는 l이 더 커져야하므로 l을 하나 뒤로 옮겨준다.

3. 이때, l과 r의 합의 절댓값이 이전에 기억해둔 l과 r의 합의 절댓값보다 작다면 이 값과 l, r값을 기억해둔다.

예시

1. l과 r의 합이 5 이므로 r을 하나 앞으로 당겨준다. 이 때 5와 (-10, 15)를 기억해둔다.

2. l과 r의 합이 -6 이므로 l을 하나 뒤로 옮겨준다. 이때의 합의 절댓값 6은 5보다 크므로 기억해둘 필요는 없다. 이런식으로 진행하다보면 4에서 저장된 -5와 4의 합의 절댓값이 끝까지 살아남게 된다.

5과정 이후에는 l+r이 항상 양수이므로 r이 계속 낮아지다가 l보다 낮아지면 알고리즘이 종료된다.

Python code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import sys
def solution(liq):
    l=0
    r=len(liq)-1
    ans = [abs(liq[l]+liq[r]),(liq[l],liq[r])]
 
    while l<r:
        mix = liq[l]+liq[r]
        if abs(mix) < ans[0]:
            ans[0= abs(mix)
            ans[1= (liq[l],liq[r])
        if mix > 0:
            r-=1
        elif mix < 0:
            l += 1
        else:
            return ans[1]
    return ans[1]
 
if __name__== "__main__":
    n = map(int,sys.stdin.readline().split())
    liq = list(map(int,sys.stdin.readline().split()))
    ans = solution(liq)
    print("{} {}".format(ans[0],ans[1]))
cs

 

후기

리스트만 입력값으로 들어오는줄 알고 21 line을 빼먹었다가 한참을 헤맸다...

 

파이썬으로 푼 사람이 많지는 않지만 1등을 해보는 날이 오다니..

문제 링크

 

2467번: 용액

첫째 줄에는 전체 용액의 수 N이 입력된다. N은 2 이상 100,000 이하의 정수이다. 둘째 줄에는 용액의 특성값을 나타내는 N개의 정수가 빈칸을 사이에 두고 오름차순으로 입력되며, 이 수들은 모두 -1,000,000,000 이상 1,000,000,000 이하이다. N개의 용액들의 특성값은 모두 서로 다르고, 산성 용액만으로나 알칼리성 용액만으로 입력이 주어지는 경우도 있을 수 있다.

www.acmicpc.net

 

반응형

'알고리즘 > 백준' 카테고리의 다른 글

백준 2469 사다리 타기  (0) 2020.03.19
백준 2468 안전 영역  (0) 2020.03.17
백준 1300 K번째 수  (0) 2020.03.11
백준 17214 다항 함수의 적분  (0) 2020.03.10
백준 2869 달팽이는 올라가고 싶다  (0) 2020.03.09
반응형

유형 : 이분탐색

문제풀이:

 모든 요소 i*j를 리스트에 넣고 정렬해서 K번째를 반환하면 시간복잡도가 O(N^2)이 되어 시간초과가 뜬다. 따라서 다른 방법을 생각해야 한다.

1. N*N행렬이라 하면, 1번째 행(1부터)의 요소는 [1, 2, ... , N]이 되고, 2번째 행의 요소는 [2*1, 2*2, ..., 2*N]이 된다. 즉, i번째 행의 요소는 [i*1, i*2, ... i*N]이 되고, i번째 행에는 어떤 값 x보다 작은 값이 x//i개 (x가 i*N보다 큰 경우에는 N개) 존재하게 된다.

2. 따라서 N*N행렬에서 x보다 작은 값은 모든 i(1~N)에 대한 x//i의 합이 된다.

3. 이 값을 check(x)라 하면, x를 1과 N^2 사이에서 이분탐색하며 check(x)가 K보다 크거나 같은 가장 작은 값을 반환한다.

Python Code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
n=int(input())
k=int(input())
 
def check(mid):
    num = 0
    for i in range(1,n+1):
        num+=min(mid//i,n)
    return num
 
def binSearch(n,k):
    l,r=0,k
    mid=(l+r)//2
    while l<=r:
        mid=(l+r)//2
        num = check(mid)
        if num >= k:
            r=mid-1
        else:
            l=mid+1
    if check(mid)<k:
        mid+=1
    print(mid)            
    
binSearch(n,k)
cs

line 6의 for문이 과정2가 된다.

문제 링크

 

1300번: K번째 수

세준이는 크기가 N×N인 배열 A를 만들었다. 배열에 들어있는 수 A[i][j] = i×j 이다. 이 수를 일차원 배열 B에 넣으면 B의 크기는 N×N이 된다. B를 오름차순 정렬했을 때, B[k]를 구해보자. 배열 A와 B의 인덱스는 1부터 시작한다.

www.acmicpc.net

 

반응형

'알고리즘 > 백준' 카테고리의 다른 글

백준 2468 안전 영역  (0) 2020.03.17
백준 2467 용액  (0) 2020.03.12
백준 17214 다항 함수의 적분  (0) 2020.03.10
백준 2869 달팽이는 올라가고 싶다  (0) 2020.03.09
백준 1890 점프  (0) 2020.03.09

+ Recent posts