문제 링크입니다: https://www.acmicpc.net/problem/1436
N의 범위가 작기 때문에 브루트 포스 기법을 이용하여 답을 찾아내면 됩니다.
#include <iostream>
#include <string>
using namespace std;
int main(void)
{
ios_base::sync_with_stdio(0);
cin.tie(0);
int N;
cin >> N;
//첫 번째 종말의 숫자
int num = 666;
int turn = 1;
//완전 탐색
while (1)
{
//해당 숫자를 찾았다면
if (turn == N)
break;
num++;
//해당 숫자를 저장하고
int copyNum = num;
string s;
while (copyNum)
{
s += (copyNum % 10 + '0');
copyNum /= 10;
}
copyNum = stoi(s);
//6이 연속으로 세개 있는지 확인
int six = 0;
while (copyNum)
{
int temp = copyNum % 10;
if (temp == 6)
six++;
else if(six < 3)
six = 0;
copyNum /= 10;
}
//조건을 만족한다면
if (six >= 3)
turn++;
}
cout << num << "\n";
return 0;
}
개발환경:Visual Studio 2017
지적, 조언, 질문 환영입니다! 댓글 남겨주세요~
'알고리즘 > BOJ' 카테고리의 다른 글
백준 1351번 무한 수열 (0) | 2019.02.22 |
---|---|
백준 15685번 드래곤 커브 (0) | 2019.02.21 |
백준 11886번 조세퍼스 문제 0 (0) | 2019.02.21 |
백준 3673번 나눌 수 있는 부분수열 (2) | 2019.02.17 |
백준 6597번 트리 복구 (0) | 2019.02.16 |