728x90
[Swift] 프로그래머스 멀리 뛰기(lv. 2)
1. 문제
https://school.programmers.co.kr/learn/courses/30/lessons/12914
2. 접근
뭔 문제지... 하다가 1칸일 때부터 5칸일 때까지 일일이 구해보았다.
1칸일 때는 1가지 밖에 없고(1칸)
2칸일 때는 2가지 밖에 없고(1칸 , 1칸 / 2칸)
3칸일 때는 3가지 밖에 없고(1칸, 1칸, 1칸 / 1칸, 2칸 / 2칸, 1칸)
4칸일 때는 위에 예시마냥 5가지 밖에 없고,
5칸일 때는 (1칸, 1칸, 1칸, 1칸, 1칸 / 1칸, 1칸, 1칸, 2칸 * 4 / 1칸, 2칸, 2칸 * 3) 8가지가 있네...?
잠깐,,
1, 2, 3, 5, 8, ....
맨 앞에 1만 붙이면 피보나치 수열인가...? 1234567로 나누라고 한 것도 이것과 연관이 있는 것 같았다.
바로 그냥 피보나치 수열의 그것을 가져다가 풀어버렸더니...
정답이었다.
문제에서 주어진 것을 가지고 추론을 통해서 풀이를 하는 문제였다. 수학 문제였다고 해야하나...?
3. 코드
func solution(_ n:Int) -> Int {
var a1 = 1
var a2 = 2
var a3 = 3
if n == 1 || n == 2 {
return n
} else {
for _ in 3 ... n {
a3 = (a1 + a2) % 1234567
a1 = a2 % 1234567
a2 = a3 % 1234567
}
}
return a3
}
728x90
'Problem Solving' 카테고리의 다른 글
[Swift] 프로그래머스 [1차] 캐시(lv. 2) (0) | 2023.03.17 |
---|---|
[Swift] 프로그래머스 H-Index(lv. 2) (0) | 2023.03.16 |
[Swift] 프로그래머스 점프와 순간이동(lv. 2) (0) | 2023.03.14 |
[Swift] 프로그래머스 예상 대진표(lv. 2) (0) | 2023.03.13 |
[Swift] 프로그래머스 영어 끝말잇기(lv. 2) (1) | 2023.03.11 |
댓글