문제 풀기/C#

82. 멀리 뛰기

kagan-draca 2025. 2. 28. 16:23

 

기본 틀 :

public class Solution {
    public long solution(int n) {
        long answer = 0;
        return answer;
    }
}

 

처음에는 조합을 이용해서 문제를 해결할려고 했다.

 

이유로는,

 

n = 7일 때,

 

1111111 => 7C7 = 1

111112 => 6C5 = 6

11122 => 5C3 = 10

1222 => 4C1 = 4

 

=> 21

 

n = 6일 때,

 

111111 => 6C6 = 1

11112 => 5C4 = 5

1122 => 4C2 = 6

222 => 3C0 = 1

 

=> 13

 

로 n이 짝수이면 3C0과 같은 케이스를 위해 1을 더해주면 원하는 결과 나올 것이라 생각했기 때문이다.

 

하지만, 위의 방법을 코드로 작성하기는 번거롭고 불필요한 과정을 더 추가하는 행위였다.

 

왜냐하면,

 

n = 1

1

=> 1

 

n = 2

11

=> 2

 

n = 3

111

12

21

=> 3

 

n = 4

1111

112

121

211

22

=> 5

 

와 같이 결과를 잘 보면 이전 결과와 그 이전 결과의 합이 내가 원하는 n의 횟수였기 때문이다.

 

그래서, List를 선언과 동시에 1과 2를 할당해주고,

 

반복문을 통해 n에 해당하는 경우의 수를 구하면서

 

OverFlow를 방지하기 위해서 해당 결과에 % 1234567를 해줬다.

 

using System;
using System.Collections.Generic;


public class Solution {
    public long solution(int n) {
        List<int> list = new List<int>() {1, 2};
        
        for(int i = 2; i < n; i++)
            list.Add((list[i - 1] + list[i - 2]) % 1234567);
        
        
        return list[n - 1];
    }
}

'문제 풀기 > C#' 카테고리의 다른 글

84. 괄호 회전하기  (0) 2025.03.04
83. 귤 고르기 (Dictionary 요소 정렬)  (0) 2025.03.04
81. N개의 최소공배수  (0) 2025.02.28
80. 예상 대진  (0) 2025.02.28
79. 카펫  (0) 2025.02.26