처음에 이 문제를 봤을 때
문제를 처음 봤을 때 666, 1666, 2666 ... 이런식으로 흘러가는 건 이해를 했다.
근데 너무 쉬워서 그냥 N - 1 출력하면 되는 게 아닌가 생각했는데 아무리 생각해도 너무 쉬워서 문제를 계속 읽었다.
함정은 6이 연속으로 3번 들어가면 그게 영화의 번째수가 된다는 것.
7번째는 따라서 6666이 아니라 6660이 된다는 것이다.
접근한 방식
처음에는 모든 경우의 수를 나누려고 했다.
맨 처음에는 모든 경우의 수를 다 생각하려고 했다.
그러다 보니 문제가 고려할 부분도 상당히 많아졌고, 맞았다고 생각해도 틀렸습니다 가 나왔다.
결국 이 방법으로 1, 2시간 고민하다가 이건 아닌 것 같아서 다 지우고 새롭게 생각했다.
1000씩 더하는 게 아니라 1씩 더해봐서 6이 3번 연속으로 나오면 그 수를 N번째로 정하는 방식으로 생각했다.
string STL은 to_string(정수)를 사용하기 위해서 include했다.
to_string(정수)는 int형 변수를 string으로 변환시켜준다.
n은 N번째를 찾기위해서 사용했고 num은 666, 1666 이런 숫자를 찾기위해 사용했다.
처음에 n을 입력받는다. 그리고 result는 최초에 666으로 초기화하고 str이라는 문자열 변수도 num을 변환시켜서 초기화 시켜놓는다.
바깥 while 반복문으로 n번 돌리고, 안쪽 while 반복문으로 6이 세 번 연속으로 나오는 수인지 확인한다.
6이 세 번 연속으로 나오는 수일경우, 안쪽while 반복문을 종료시킨다.
코드는 위에서 확인할 수 있다.
하드코딩 하는 버릇이 아직 조금 남아있는 것 같다... 고쳐야 될 것 같다.
'알고리즘 > Baekjoon' 카테고리의 다른 글
[C++] 백준 10282번 해킹 (0) | 2021.07.20 |
---|---|
[C++] 백준 15649번 N과 M (1) (0) | 2021.07.20 |
[C++] 백준 1011번 Fly me to the Alpha Centauri (0) | 2021.07.20 |
[C++] 백준 1920번 수 찾기 (0) | 2021.07.16 |
[C++] 백준 1018번 체스판 다시 칠하기 (0) | 2021.07.16 |