알고리즘/백준-실버

백준 1436번 영화감독 숌(C++)

뜨거운 개발자 2023. 1. 7. 01:55

문제

정답 코드

#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

N2T
728x90