본문으로 바로가기

11726

category ps/브루트 포스 2021. 7. 10. 22:46

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