본문 바로가기
Problem Solving

[Swift] 프로그래머스 멀리 뛰기(lv. 2)

by DuncanKim 2023. 3. 15.
728x90

[Swift] 프로그래머스 멀리 뛰기(lv. 2)

 

1. 문제

https://school.programmers.co.kr/learn/courses/30/lessons/12914

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

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

댓글