728x90
N <= 10000
666
1666
2666
3666
4666
5666
6661 6662 6663 6664 6665 6666 6667 6668 6669
7666
8666
9666
10666
자... 규칙은??
규칙을 파악하기가 어려울 것이다.
물론 시간을 고심히 들여 찾을 수 있을 것이다.
하지만, 경우의 수가 얼마 되지 않는다면, 모든 경우의 수를 다 시도해보고 정답만 골라서 카운트를 올려주자!
num = 655 로 한 후 하나씩 증가하면서,
666이 들어간 숫자 중 n번 째로 큰 숫자를 찾자! 666이 들어간 것을 찾기 위해 숫자를 int형에서 string으로 바꾸어 하나하나 비교하였다.
#include <cstdio>
#include <string>
using namespace std;
int main() {
int n;
scanf("%d", &n);
int nth = 0;
int num = 665;
while(nth < n){
num++;
string s = to_string(num);
int n_six = 0;
for (int i=0; i<s.size(); i++){
if (n_six == 3) break;
if (s[i] == '6'){
if (n_six == 0) n_six++;
else if (s[i-1] == '6') n_six++;
else n_six = 0;
}
else n_six = 0;
}
if (n_six == 3) {
nth++;
}
}
printf("%d\n", num);
return 0;
}
728x90
'알고리즘, 자료구조 > 알고리즘' 카테고리의 다른 글
1107 리모컨 (0) | 2019.07.21 |
---|---|
1018 체스판 다시 칠하기 (0) | 2019.07.18 |
[brute-force] 2798 블랙잭 (0) | 2019.07.15 |
17298 오큰수 (4) | 2019.07.14 |
Greedy 알고리즘 (2) | 2019.07.14 |
댓글