문제풀이
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| import sys
input = sys.stdin.readline
n, k = map(int, input().split())
values = [int(input()) for _ in range(n)]
cur_value_index = n - 1
count = 0
while k > 0:
if values[cur_value_index] <= k:
count += k // values[cur_value_index]
k = k % values[cur_value_index]
cur_value_index -= 1
print(count)
|
일단 되는대로 해봤는데, 역시나 시간초과였다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| import sys
input = sys.stdin.readline
n = int(input())
classes = sorted([list(map(int, input().split())) for _ in range(n)], key=lambda x: x[1])
greedy_list = [0 for _ in range(max(max(x) for x in classes) + 1)]
for cls in classes:
fst_max = max(greedy_list[:cls[0] + 1])
snd_max = max(greedy_list[:cls[1] + 1])
if snd_max < fst_max + 1:
greedy_list[cls[1]] = fst_max + 1
print(max(greedy_list))
|
인터넷을 참고해서 풀었는데 역시 간단한 거였다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| import sys
input = sys.stdin.readline
n = int(input())
classes = sorted([list(map(int, input().split())) for _ in range(n)], key=lambda x: (x[1], x[0]))
count = 0
ended_time = 0
for cls in classes:
if cls[0] >= ended_time:
count += 1
ended_time = cls[1]
print(count)
|
시간이 짧게 걸리는 사람부터 돈을 뽑으면 된다.
1
2
3
4
5
6
7
| import sys
input = sys.stdin.readline
n = int(input())
times = sorted(list(map(int, input().split())))
print(sum([t * (n - i) for i, t in enumerate(times)]))
|
”-“가 나온 이후부터는 괄호를 사용해서 식의 총합을 계속 줄일 수 있다.
1
2
3
4
5
6
7
8
9
10
11
12
13
| import sys
input = sys.stdin.readline
eqa = input().strip()
minus_index = eqa.find("-")
if minus_index == -1:
print(sum(map(int, eqa.split("+"))))
else:
print(
sum(map(int, eqa[:minus_index].split("+")))
- sum(map(int, eqa[minus_index + 1:].replace("-", "+").split("+")))
)
|
다음 도시까지 가는데 필요한 도로에서 쓸 연료는 그 도로 전의 도시들 중 리터당 가격이 가장 싼 곳에서 사면 된다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| import sys
input = sys.stdin.readline
n_cities = int(input())
roads = list(map(int, input().split()))
cities = list(map(int, input().split()))
cost = 0
cur_min = cities[0]
for i in range(n_cities - 1):
cost += cur_min * roads[i]
cur_min = min(cur_min, cities[i + 1])
print(cost)
|