Baekjoon 1436 영화감독 숌

배혜진·2023년 1월 13일

Baekjoon Class 2

목록 보기
5/7

[문제]

못말리는 어린양 숀 !

[풀이]

666이 연속으로 들어가는 수를 작은 수부터 탐색하면 되는 문제이다.
C++로 코드를 짜기엔 수를 앞뒤로 생각해야하기때문에 복잡해져서
이번엔 파이썬으로 코딩을 해보았다.

파이썬에는 in이라는 간편한 기능이 있기때문에 이처럼 유무를 판별하기에 간편하다.
비슷한 문제로는, 369게임 코드가 있다.

지난번에 파이썬을 몰랐을 때, 369게임 코드를 작성할땐 너무 복잡해졌었는데
파이썬으로 풀면 매우 간단한 문제였다.

고려할 점은,
1. '666'이 연속으로 들어있다.
2. 순차적으로 탐색하다 원하는 수를 발견하면 출력한다.

이런 코드를 brute force라고 한다.

[최종코드]

n=int(input())
cnt=0
num=666
for i in range(1000000000):
    if '666' in str(num):
        cnt+=1
        if(cnt==n):
            print(num)
            break
    num=num+1

[돌아보며]

이렇게 파이썬으로 하면 정말 간단해지네 !
C++로 코딩하면 어떻게 될지 참고해서 C++도 만들어보았다.

#include <iostream>
using namespace std;

int main(void){
	int num, t=666, cnt=0; //666부터 counting 시작
    cin>>num; //666부터 start
    
    while(1){ //break를 통해 while문 빠져나감
    
    	int k=t, a[100], idx=0;
        
        while(k){
        	a[idx] = k%10;
            idx=idx+1; //길이
            k = k/10;
        }
        
        for(int i=1; i<idx-1; i++){
        	if(a[i-1]==6&&a[i]==6&&a[i+1]==6){
            	cnt=cnt+1;
                break;
            }
        }
        if(cnt==num){
        	cout<<t<<endl;
            break;
        }
        t=t+1; //666부터 차례로 증가
    }
    return 0;
}

이 아이디어도 기억해두자 !

profile
HYU🦁 Information System 22✨

0개의 댓글