제목: Lv. 2 - 멀리뛰기
시간: 40분
https://school.programmers.co.kr/learn/courses/30/lessons/12914#qna
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
func solution(_ n:Int) -> Int {
var arr = (0..<n).map{$0}
if (n == 1) {return 1}
if (n == 2) {return 2}
arr[0] = 1
arr[1] = 2
for i in (2..<n) {
arr[i] = (arr[i-2] + arr[i-1]) % 1234567
}
return arr.last!
}
멀리 뛰기를 하는 경우의 수를 직접 계산해보면서 나열해보면
// N = 1 : 1
// N = 2 : 2
// N = 3 : 3
// N = 4 : 5
// 1111 : 1
// 112 : 3
// 22 : 1
// N = 5 : 8
// 11111 : 1
// 1112 : 4
// 122 : 3
1, 2, 3, 5, 8 ... 이렇게 규칙이 생겨요.
DP로 피보나치 값을 구해 문제를 해결했어요.
코테할 때 점화식, 확률 공식을 생각해보는 습관이 필요해보이네요 :)
그리고 나머지를 맨 마지막에 계산했었는데, 값이 너무 커져서 실패가 뜨더라구요.
결국엔 마지막에 있는 값은 부모이고,
분모에 있는 값을 하나씩 나눈다는 생각으로 DP 계산할 때 넣어줬습니다.
'알고리즘 > 문제' 카테고리의 다른 글
[프로그래머스] Lv. 1 - 대충 만든 자판 (0) | 2024.11.22 |
---|---|
[프로그래머스] Lv. 2 - 퍼즐 게임 챌린지 (0) | 2024.11.20 |
[프로그래머스] Lv. 1 - 바탕화면 정리 (0) | 2024.11.17 |
[프로그래머스] Lv. 0 - 유한소수 판별하기 (1) | 2023.05.09 |
[프로그래머스] Lv. 0 - 외계어 사전 (0) | 2023.05.09 |