728x90
반응형
<문제 링크>
https://www.acmicpc.net/problem/14651
14651번: 걷다보니 신천역 삼 (Large)
욱제는 ‘삼’이란 음절을 참 좋아한다. 인삼, 홍삼, 해삼, 삼성, 이춘삼(李春森), 삼식이, 삼시세끼, ㄴㄴ 그거 안 삼, 삼과 죽음, 알았삼, 걷다보니 신천역 삼, 그리고 특히 일이삼을 좋아한다.
www.acmicpc.net
<풀이>
1부터 N자리까지의 1, 2, 0으로 구성된 3의 배수를 하나씩 구한다면, 실행 시간이 너무 길어 시간 초과가 뜰 것이다.
하나씩 다 구하면 시간 초과가 발생하기 때문에 뭔가 수학적 규칙을 찾아야한다.
수학적 규칙을 찾기 위해 조건에 맞는 낮은 자릿수를 직접 적어보자.
N | Result |
1 | 0 |
2 | 2 |
3 | 6 |
4 | 18 |
5 | 54 |
이렇게 누적합이 생기는데 N자릿수의 값은 (N-1자릿수 값 * 3)인 걸 확인 할 수 있다.
또한, 출력 형식에 맞추기 위해 1,000,000,009로 나눴을 때의 나머지를 dp[]에 넣어주면 된다.
<코드>
dp[]: 1, 2, 0으로 구성되어 있는 3의 배수 누적합 리스트
import sys
if __name__ == '__main__':
N = int(sys.stdin.readline())
dp = [0 for _ in range(N+1)]
if N >= 2:
dp[2] = 2
for i in range(3, N+1):
dp[i] = (dp[i-1] * 3) % 1000000009
print(dp[N])
728x90
반응형
'~2023' 카테고리의 다른 글
[Python] 백준 1932번 문제, 정수 삼각형 (0) | 2021.08.23 |
---|---|
[Python] 백준 9663번 문제, N-Queen (0) | 2021.08.20 |
[Python] 백준 2636번 문제, 치즈 (0) | 2021.08.20 |
[Python] 백준 5430번 문제, AC (0) | 2021.08.02 |
[Python] 백준 14499번 문제, 주사위 굴리기 (0) | 2021.08.02 |