본문으로 바로가기

11726

category ps브루트 포스 4년 전

11726


풀이 코드

#include <iostream>
using namespace std;
// 11726
int width;
int solve(int currentWidth){
// 기저사례 : 현재 너비가 2이면 2가지 반환, 1 이면 1가지 반환
switch(currentWidth){
case 1 :
return 1;
break;
case 2 :
return 2;
}
int ret = 0;
ret += solve(currentWidth - 1) + solve(currentWidth - 2);
return ret;
}
int main(){
cin >> width;
cout << solve(width) << endl;
}

위의 코드를 제출한 결과입니다. 재귀를 사용해서 보기 깔끔한 코드를 만들어 보려고 했으나 깊이가 깊어지면 시간 상의 문제가 발생하는 듯 합니다. 또한, 계산 중, 값 10,007로 나누어주지 않았다는 점도 있습니다.

#include <iostream>
using namespace std;
// 11726
int main(){
int width;
int tile[1001];
cin >> width;
tile[1] = 1;
tile[2] = 2;
for (int i = 3; i <= width; i++) {
tile[i] = (tile[i - 1] + tile[i - 2]) % 10007;
}
cout << tile[width] << endl;
}

해설

피보나치 수열처럼 더해나가는 것이었습니다. 문제의 규칙을 찾는 과정만이 핵심이었고 코드 구현은 어렵지 않은 문제였습니다.

 

반응형

ps브루트 포스카테고리의 다른글

3085 사탕 게임  (0) 2021.08.21
2309 일곱 난쟁이  (0) 2021.08.21
1476  (0) 2021.07.10
[algospot] 게임판 덮기 BOARDCOVER  (0) 2021.06.13
[algospot] PICNIC  (0) 2021.06.08