728x90
https://www.acmicpc.net/problem/1942
손 풀려다가 방향을 잘못잡아 어렵게 푼 문제이다.
시간이 주어졌을때 각 구간에서 3의 배수인 시계 정수의 개수를 구하는 문제이다.
이걸 어떻게 풀지 고민하다가 DP 처럼 딕셔너리 자료형을 사용해서 모든값을 구하는 방향으로 했다.
반복문으로 00:00:00 부터 23:59:59 까지 다 구하면 될줄 알았으나 time_dict[num1-1]에서 key error가 떠서 마지막에 실패를 하는 것을 보았다.
반복문으로 모든 값을 구한건은 맞았으나 10000에서 1을 뺀 값이 9999이므로 5959와 맞춰주는 작업이 필요했다. (100에서도 마찬가지이다.)
그렇게 했더니 다행이 넘길수 있었다.
time_dict = dict()
prev = None
for i in range(24):
time_dict[i * 10000 - 1] = time_dict[prev] if prev is not None else 0
for j in range(60):
time_dict[i * 10000 + j * 100 - 1] = time_dict[prev] if prev is not None else 0
for k in range(60):
tmp = i * 10000 + j * 100 + k
time_dict[tmp] = time_dict[prev] if prev is not None else 0
if not tmp % 3:
time_dict[tmp] += 1
prev = tmp
ans = ''
for _ in range(3):
num1, num2 = map(lambda x:(int(''.join(x.split(":")))), input().split())
tmp = 0
if num1 > num2:
tmp = time_dict[235959] - time_dict[num1 - 1] + time_dict[num2] - time_dict[-1]
else:
tmp = time_dict[num2] - time_dict[num1 - 1]
ans += f'{tmp}\n'
print(ans)
'STUDY > Algorithm' 카테고리의 다른 글
[백준] 15683 감시 python (0) | 2022.01.14 |
---|---|
[백준] 11811 데스스타 python (0) | 2022.01.14 |
[백준] 15644 구슬 탈출 3, python (0) | 2022.01.13 |
[백준] 15681 트리와 쿼리, python (0) | 2022.01.12 |
[백준] 20208 진우의 민트초코우유 python(pypy), C++ (0) | 2022.01.12 |