Dandy Now!
  • [알고리즘][파이썬] 백준_1436_영화감독 숌
    2021년 12월 13일 13시 39분 41초에 업로드 된 글입니다.
    작성자: DandyNow
    728x90
    반응형

    https://www.acmicpc.net/problem/1436

     

    1436번: 영화감독 숌

    666은 종말을 나타내는 숫자라고 한다. 따라서, 많은 블록버스터 영화에서는 666이 들어간 제목을 많이 사용한다. 영화감독 숌은 세상의 종말 이라는 시리즈 영화의 감독이다. 조지 루카스는 스타

    www.acmicpc.net

     

    숫자 '666'이 들어간 영화 제목을 출력해야 한다.

    영화는 시리즈물로서 후속작이 나오면 '666'이 들어간 숫자 중 전작의 제목보다 큰 숫자가 제목이 된다.

    첫 번째 영화는 '666',

    두 번째 영화는 '1666',

    세 번째 영화는 '2666',


    1차 시도

    # 불필요한 코드 놓임(결과: 틀렸습니다)
    def title(n):
        lst = []
        for i in range(2666800): # 10,000개의 영화제목 리스트를 만들기 위한 최적의 자연수를 찾아 적용
            if '666' in str(i):
                lst.append(i)
        print(len(lst)) # 불필요한 코드
        return lst[n-1]
    
    N = int(input())
    print(title(N))

     

    분명히 예제 입력 1~5번까지 정확하게 출력되는 것을 확인하고 제출했는데,

    결과는 "틀렸습니다"

    알고보니 10000개의 영화 제목 리스트를 만들기 위한 최적의 자연수 2666800을 찾기 위해 넣었던 코드

    print(len(lst))

    를 삭제하지 않고 제출했기 때문이다.

    문제의 원인을 얼른 간파하지 못하고 다른 부분을 고치고 고쳤던 것은 더 문제!


    2차 시도

    # for문 활용(결과: 맞았습니다!)
    def title(n):
        lst = []
        for i in range(2666800): # 10,000개의 영화제목 리스트를 만들기 위한 최적의 자연수를 찾아 적용
            if '666' in str(i):
                lst.append(i)
        return lst[n-1]
    
    N = int(input())
    print(title(N))

     

    불필요한 코드 제거 후 제출,

    결과는 성공!


    3차 시도

    # while문 이용(결과: 맞았습니다!)
    N = int(input())
    cnt = 0
    title = 666
    while 1:
        if '666' in str(title):
            cnt += 1
        if N == cnt:
            print(title)
            break
        title += 1

     

    구글링 해보니 대부분 while문으로 문제를 해결했다.

    그래서 while문으로 코드를 다시 짜 보았다.

    결과는 성공!


    해결한 방법

    비교적 간단한 문제였다.

    for문을 사용,

    1~2666800번(입력 숫자 N은 10,000보다 작거나 같은 자연수라는 조건 때문)까지 반복하도록 하고,

    빈 리스트를 만들어 666을 포함하고 있는 숫자를 append 시켰다.

    리스트의 주소값이 입력값(N)-1과 같을때 주소에 해당하는 값을 출력 시켰다.

    입력값에 -1한 이유는 리스트 주소값이 0부터 시작하기 때문이다.

     

    while문을 사용,

    title이라는 정수형 변수를 만들고,

    문자열로 바꿨을 때 '666'을 포함하고 있으면

    카운트했다.

    while문이 1회전 할때마다 title에 +1하였다.

    카운트한 값(cnt)이 입력값(N)과 같을때 반복을 멈추고

    title를 출력하였다. 

     

    코드 제출전 결과가 정상 출력되더라도

    테스트 등을 위해 넣어둔 불필요한 코드가 있는지

    확인할 필요가 있겠다.

    728x90
    반응형
    댓글