새소식

코딩테스트/백준_실버

[C++] 영화감독 숌

  • -

[문제]

https://www.acmicpc.net/problem/1436

 

1436번: 영화감독 숌

666은 종말을 나타내는 수라고 한다. 따라서, 많은 블록버스터 영화에서는 666이 들어간 제목을 많이 사용한다. 영화감독 숌은 세상의 종말 이라는 시리즈 영화의 감독이다. 조지 루카스는 스타워

www.acmicpc.net

[문제 풀이]

처음엔 어떻게 접근해야 할지 감이 안왔는데 알고리즘 종류가 브루트 포스인걸 보고 전부 돌려보자고 판단할 수 있었던 문제. (다음부터는 알고리즘 종류를 안봐도 감이 올 수 있게 연습을 하자.)

 

숫자를 666부터 계속해서 올려가면서 666을 카운트 하면서 입력값에 카운트가 걸리면 해당 값을 반환하도록 만들었다.

 

문제를 풀다 보면 오류가 생길 수 있는 부분이 6666이다. 6666의 경우에는 666x에서도 666이고 x666에서도 666이 있기에 난 666이 나오는 순간 해당 부분을 break를 통해서 빠져나오게 만들었다.

[코드]

#include <iostream> #include <string> using namespace std; string find_count(int n){ string answer = ""; int count = 0; //666부터 시작해서 계속 i올리기 for(int i = 666;;i++){ //answer는 숫자 i를 string으로 변환한다. answer = to_string(i); //j는 answer의 문자길이 -2(연속으로 3개를 볼 거기 때문에) 만큼 반복. for(int j = 0;j<answer.length() - 2;j++){ //만일 연속으로 3개가 6이라면 if(answer[j] == '6' && answer[j + 1] == '6' && answer[j + 2] == '6'){ //count를 올리자. count++; //break를 해주는 이유는 만일 안해준다면 6666에서 count가 2번 올라간다. break; } } //만일 count가 n이라면 if(count == n){ return answer; } } return 0; } int main(){ int n; cin>>n; string answer = ""; answer = find_count(n); cout<<answer<<endl; return 0; }

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.