본문 바로가기
IT/알고리즘

1일 N알고리즘 - #36

by Sungjun_ 2020. 6. 6.

문제

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

 

1436번: 영화감독 숌

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

www.acmicpc.net

문제는 위 사이트를 참고해주세요.

 


풀이

N = int(input())
count = 2
x = 1666
if N == 1:
    print(666)
else:
    while count <= N:
        strX = str(x)
        for i in range(1, len(strX)-1):
            if strX[i:i+1] == "6":
                if strX[i-1:i] == strX[i:i+1] and strX[i:i+1] == strX[i+1:i+2]:
                    ans = x
                    count += 1
                    break
        x += 1
    print(ans)

 

N이 1인 경우에는 666을 바로 출력하게 하기 때문에

count=2, x = 1666으로 시작을 합니다.

while문은 666이 연속으로 나올 때마다 count가 올라가는데 N보다 작거나 같을 때까지 돌립니다.

while문 안을 보면 먼저 x를 문자열로 바꾸어주고 for문을 1부터 문자열의 길이-1까지 돌립니다.

예를 들어 문자열의 길이가 4면 i에는 1, 2, 3이 들어옵니다.

안에 if문은 기준이 되는 자리의 값이 6이면 그 문자의 앞뒤를 비교해 둘다 6인 경우에

ans에 x값을 넣고 count + 1을 해주고 for문을 멈춥니다.

그리고 x + 1을 하고 다시 수를 찾습니다.

 

위 방법이 처음풀었던 코드이고

아래 방법이 더 간단한 방법입니다.

 

N = int(input())
x = 666
while N:
    if '666' in str(x):
        N -= 1
    x += 1
print(x-1)

N이 0이 될때까지 while문을 돌리고 x를 문자열로 바꾸고 문자열 666이 속해있으면 

N - 1을 하고 x + 1을합니다.

마지막으로 x-1을 print해줘야 정답이 나옵니다.

'IT > 알고리즘' 카테고리의 다른 글

1일 N알고리즘 - #38  (0) 2020.06.08
1일 N알고리즘 - #37  (0) 2020.06.06
1일 N알고리즘 - #35  (0) 2020.06.02
1일 N알고리즘 - #34  (0) 2020.06.01
1일 N알고리즘 - #33  (0) 2020.06.01

댓글