문제
https://www.acmicpc.net/problem/1436
소스코드
#include <iostream>
using namespace std;
int main(void) {
int N; cin >> N;
int answer = 666;
N--;
while (N) {
answer++;
//answer에 666 들어가는지 확인
int x = answer;
while (x > 0) {
if (x % 1000 == 666) {
N--;
break;
}
x /= 10;
}
}
cout << answer << endl;
}
코드설명
666부터 1씩 증가시켜가며 그 숫자에 666이 들어가는지 확인한다.
1000으로 나눈 나머지가 666이 아니라면, 그 수(answer)를 10으로 나눈 후 다시 1000으로 나눠서 나머지가 666 인지 확인하는 방식이다.
예를 들어, 106667 이라는 숫자가 있다. 이 숫자를 1000으로 나누면 나머지가 667 이고 이것은 666이 아니다. 그 다음에는 106667을 10으로 나눈 몫인 10666을 1000으로 나눠보자. 그러면 666이므로 106667에 666 이 들어가는 것을 확인할 수 있다.
'개인 공부 > 코딩테스트' 카테고리의 다른 글
[C++] 백준 1920번 수 찾기 :: seoftware (0) | 2020.03.28 |
---|---|
[C++][프로그래머스] 위장 - 해시 :: seoftware (0) | 2020.03.27 |
[C++] 백준 1874번 스택 수열 :: seoftware (0) | 2020.03.18 |
[C++] 백준 2231번 분해합 :: seoftware (0) | 2020.03.14 |
[C++] 백준 1181번 단어 정렬 :: seoftware (0) | 2020.03.13 |
댓글