문제
정답 코드
#include <iostream> using namespace std; #define ll long long int main() { ll n; cin >>n; ll go = 665; int i =0; int tmp; while(i <n) { tmp = go; while (tmp !=0) { if (tmp%1000 ==666) { i++; break; } else tmp /=10; } go++; } go--; cout << go; }
문제 풀이의 흐름
- 숫자가 실제로 어떻게 늘어나는가?
- 666이 첫번째
- 1666 2666 3666 4666 5666 6660 6661 6662 6663 6664 6665 6666 66676668 6669
- 7666
이런식이다.
즉 1000으로 나눴을 때 666이 나오는 경우에는 그게 첫번째 만약 아닌경우에는 1의 자리를 버리고 다시 1000으로 나눴을 때 나오는 나머지가 666인 경우에 문제이다.
주의 할 점
생각을 잘 하자..
반성 및 고찰
일단 문제가 잘 안 풀릴때는 직접 내가 기계라면 어떻게 생각할지를 컴퓨터의 입장에서 생각해보도록 노력하자.
Uploaded by
N2T728x90
'알고리즘 > 백준-실버' 카테고리의 다른 글
백준 1325번 효율적인 해킹(C++) (2) | 2023.01.09 |
---|---|
백준 9012번 괄호 (C++) (스택활용) (0) | 2023.01.08 |
백준 2852번 NBA 농구(C++) (0) | 2023.01.07 |
백준 3474번 교수가 된 현우(C++) (0) | 2023.01.07 |
백준 10709번 기상캐스터(C++) (0) | 2023.01.06 |