728x90
[백준알고리즘] 1436번: 영화감독 숌 -C++
문제를 어떻게 풀어야할까 고민을 많이 했다.
처음에는 666을 기준으로 왼쪽과 오른쪽에 숫자를 넣어서 가능한 수들을 찾아야 하나 했으나, 대소 비교를 해야 한다는 점이 걸렸다. 1만 번째의 종말의 수가 몇인지를 모르니 언제까지 수를 늘릴지도 모르고 좌우로 어디부터 어떻게 넣어야 할지도 애매했다.
그래서 1부터 그냥 수를 늘려가면서 666이 들어가는지 확인하는 방향으로 바꿨다. 그러면서 666이 들어간다면 i번째 종말의 숫자가 되는 것으로 생각했다.
어떻게 풀지만 고민한다면 푸는건 금방 푸는 것 같다!
#include <iostream>
void solve(void);
int main(void)
{
solve();
}
bool check(int num)
{
while (num)
{
if (666 == num % 1000) return true;
num /= 10;
}
return false;
}
void solve(void)
{
int n;
std::cin >> n;
int answer = 0;
int rank = 0;
while (rank < n)
{
answer++;
if (check(answer))
rank++;
}
std::cout << answer;
}
잘못된 점이나 부족한 점 지적해주시면 감사하겠습니다
728x90
'algorithm > 백준알고리즘' 카테고리의 다른 글
[백준알고리즘] 10989번: 수 정렬하기 3 -C++ (0) | 2021.01.24 |
---|---|
[백준알고리즘] 2751번: 수 정렬하기 2 -C++ (0) | 2021.01.23 |
[백준알고리즘] 1018번: 체스판 다시 칠하기 -Python, C++ (0) | 2021.01.23 |
[백준알고리즘] 7568번: 덩치 -C++ (0) | 2021.01.22 |
[백준알고리즘] 2231번: 분해합 -Python, C++ (0) | 2021.01.21 |