반응형
백준 1436번 영화감독 숌 문제이다.
문제는 다음과 같다. 숫자 N이 주어지게 되면 N번째 666이 들어간 숫자를 찾으면 된다.
브루트포스 유형의 문제이기 때문에 숫자를 하나씩 모두 확인해주자
666이 가장 먼저 나오는 숫자는 666이기 때문에 666부터 시작하여 모든 숫자를 확인하고 666이 들어있다면 count를 1 씩 증가하여
입력값인 N과 같은 값이라면 해당 값을 출력하도록 만들어 주었다.
언어는 C++을 사용하여 프로그래밍 하였다.
#include <iostream>
#include <cmath>
using namespace std;
int main(){
std::ios_base::sync_with_stdio(false);
int n;
std::cin >> n;
int a = 666;
int count = 0;
while(1){
double one, two, thr;
int len = floor(log10(a)) + 1;
int flag = 0;
for(int i = 0; i < len - 2; i++){
int tmp = pow(10, i);
one = (((a/tmp)*tmp) % (tmp*10)) / tmp;
two = ((((a/tmp)*tmp) % (tmp * 100)) - (one * tmp)) / (tmp * 10);
thr = ((((a/tmp)*tmp) % (tmp * 1000)) - (one * tmp) - (two * tmp * 10)) / (tmp * 100);
if (one == 6 && two == 6 && thr == 6 && flag == 0){
count++;
flag++;
}
}
if(count == n){
std::cout << a << '\n';
return 0;
}
a++;
}
}
다른 방법도 있었을 것 같지만 나는 flag를 두어 6666과 같이 666 패턴이 두번 이상 있는 경우에 한번 확인 후에는 count가 증가되지 않도록 해 주었다.
틀리지 않고 한번에 성공하였다.
반응형
'Computer Science > 백준' 카테고리의 다른 글
백준 15650번 N과 M (2) (0) | 2020.03.11 |
---|---|
백준 15649번 N과 M (1) (0) | 2020.03.11 |
백준 1018번 체스판 다시 칠하기 (0) | 2020.02.06 |
백준 7568번 덩치 (0) | 2020.02.06 |
백준 2231번 분해합 (0) | 2020.02.06 |