728x90
이 문제를 해결하는 과정에서 오답을 낸 것이 아니라,
그냥 문제 자체를 이해하지 못했다.
첫번째는 666, 두번째는 1666 6번째는 5666인데 왜 7번째는 6660인가? 이 것을 해결하지 못했는데
되게 간단한 문제였다.
666이 무조건 포함이 되어야 한다.
따라서 5666 다음엔 6666이 오면 6660보다 더 큰 값이 오니까 말이 안 되는 거다.
7번째로 작은 값은 6660이 와야지 6666이 오면 나머지 6660, 6661, 6662 이 값들은 다 버려지기 때문이다.
= 내 풀이 =
1부터 int의 최댓값까지 반복을 하면서
666이 포함되어있는 값들을 순서대로 list에 담았다.
그리고 list의 사이즈가 10000까지 저장이 되어야 내가 원하는 값을 쏙 뽑아서 쓸 수 있기 때문에 이러한 식을 이용했다.
이 풀이는 시간이 되게 많이 걸린다는 단점이있다.
시간을 단축시킬 수 있는 효율적인 방법을 공부했다.
https://st-lab.tistory.com/103 이 블로그를 참고했는데,
모든 값을 다 계산하는 방식이 아니라 666 % 10으로 나누었을 때, 6인 경우 6666 % 100으로 나누었을 때, 6인 경우
..... 를 다 계산해서 전체를 반복하는 것이 아닌 내가 원하는 값을 반복을 최소화 시킨 후 값을 찾아낼 수 있다.
이 경우는 내가 더 공부를 하고 상세하게 다시 작성해야겠다.
728x90
'백준 오답노트 > 브루트포스' 카테고리의 다른 글
백준 - 브루트포스 1018번 체스판 다시 칠하기 / 강의로 해결 (0) | 2022.12.10 |
---|---|
백준 - 브루트포스 2231번 분해합 / 백준 질문글로 해결 (0) | 2022.12.08 |