728x90
#9461번 파도반 수열 https://www.acmicpc.net/problem/9461
9461번: 파도반 수열
오른쪽 그림과 같이 삼각형이 나선 모양으로 놓여져 있다. 첫 삼각형은 정삼각형으로 변의 길이는 1이다. 그 다음에는 다음과 같은 과정으로 정삼각형을 계속 추가한다. 나선에서 가장 긴 변의
www.acmicpc.net
수열 문제인 만큼 단번에 DP임을 알아차렸다!
처음에는 주어지는 테스트 케이스를 모두 저장할 때, 정렬을 진행하면서 저장했다.
그리고 리스트 가장 오른쪽에 있는 수 (가장 큰 수)까지 dp 계산을 진행하고 각각의 케이스에 맞는 값을 출력했는데
시간초과가 났다.
그래서 단순히 최댓값을 별도의 변수에 추가로 저장하고 진행했더니 통과했다.
틀린 코드 with 정렬 (시간초과)
n = int(input())
target = [int(input())]
for _ in range(n-1):
x = int(input())
for i in range(len(target)):
if target[i] > x:
target = target[:i] + [x] + target[i:]
else:
target.append(x)
dp = [0, 1, 1, 1] + [0]*(100-3)
for i in range(4, target[-1]+1):
dp[i] = dp[i-2] + dp[i-3]
for t in target:
print(dp[t])
정답 코드
n = int(input())
target = []
max_num = 0
for _ in range(n):
x = int(input())
target.append(x)
max_num = max(max_num, x)
dp = [0, 1, 1, 1] + [0]*(100-3)
for i in range(4, max_num+1):
dp[i] = dp[i-2] + dp[i-3]
for t in target:
print(dp[t])
'Algorithm > acmicpc.net' 카테고리의 다른 글
처음보는 유형 (#5525번 IOIOI) (0) | 2022.03.19 |
---|---|
DP는 아직 어렵.. (#17626 Four Squares) (0) | 2022.03.18 |
술 마시고도 푸는 실버3 (#11047번 동전0) (0) | 2022.03.18 |
시간복잡도는 완벽히 알고있는 듯 한. (#11659번 구간 합 구하기 4) (0) | 2022.03.15 |
애매한 차이. (#1780 종이의 개수) (0) | 2022.03.15 |