fun solution(n: Int): Long {
if(n == 1)
return 1
val numJumpWay = LongArray(n+1)
numJumpWay[1] = 1
numJumpWay[2] = 2
for(numJumpWayIndex in 3..numJumpWay.size-1) {
numJumpWay[numJumpWayIndex] = (numJumpWay[numJumpWayIndex-1] + numJumpWay[numJumpWayIndex-2]) % 1234567
}
return numJumpWay[n]
}
풀이 과정
- 문제에서의 경우의 수를 n이 8일 때까지 손으로 직접 해본다.
- n이 증가할 때마다 규칙성이 있는지 확인한다.
- [n] = [n-1] + [n-2] 임이 확인되어 배열을 만들어 반복문을 돌린다.
포인트
- 완전 탐색 문제가 아닐까 생각했지만 n의 최댓값(2000)일 때 완전 탐색은 시간 초과가 될 가능성이 높았기 때문에 다른 방법을 생각했고 그 것이 규칙성을 찾는 DP가 정답이었다.
- 다른 방식으로 직접 계산 식을 만들어 풀 수도 있다.
'TLI > 코드카타' 카테고리의 다른 글
2024.06.16 TIL 코트카타 84번 (괄호 회전하기) (0) | 2024.06.16 |
---|---|
2024.06.15 TIL 코트카타 83번 (귤고르기) (0) | 2024.06.15 |
2024.06.13 TIL 코트카타 81번(N개의 최소공배수) (0) | 2024.06.13 |
2024.06.11 TIL 코트카타 79번(카펫) (0) | 2024.06.11 |
2024.06.10 TIL 코트카타 78번(피보나치수) (0) | 2024.06.10 |