2019.03.18) 선린 정올특집 1편 - 1449, 9095, 11508, 11509, 13900(PyPy3)

2019. 3. 18. 15:46프로그래밍(주력)/백준 문제풀이

간단했다.

탐색같은 원리적인건 안써도 됬지만 고민할 필요는 있는 문제들이었다.


1449번

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
N, L = map(int, input().split(' '))
li = list(map(int, input().split(' ')))
 
li.sort()
 
re = 0
= 0
while i < N:
    for j in range(i + 1, N):
        if li[i] + L - 1 < li[j]:
            re += 1
            i = j - 1
            break
        if j == N - 1:
            i = j
    else:
        re += 1
 
    i += 1
 
print(re)
 
cs

9095번

1
2
3
4
5
6
7
8
9
10
dp = [124]
 
for _ in range(int(input())):
    n = int(input())
 
    for i in range(len(dp) - 1, n - 1):
        dp.append(dp[i] + dp[i - 1+ dp[i - 2])
 
    print(dp[n - 1])
 
cs

11508번

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
from heapq import heappush, heappop
 
hq = list()
= int(input())
 
for _ in range(N):
    heappush(hq, int(input()))
 
= 0
 
hq.sort(reverse=True)
 
for i in range(1, N + 1):
    if i % 3 == 0:
        continue
    r += hq[i - 1]
 
print(r)
cs

11509번

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
= int(input())
 
 
li = list(map(int, input().split(' ')))
 
visited = [False for i in range(N)]
 
re = 0
 
for i in range(N - 1-1-1):
    for j in range(i - 1-1-1):
        if li[i] + 1 == li[j] and not visited[j]:
            visited[j] = True
            break
    else:
        re += 1
 
 
print(re)
 
cs

13900번

1
2
3
4
5
6
7
8
9
10
11
12
13
= int(input())
 
li = list(map(int,input().split(' ')))
 
re = 0
 
= 0
 
for i in range(N - 10-1):
    re += li[i]
    s += re * li[i - 1]
 
print(s)
cs