티스토리 뷰

728x90
반응형

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

 

1436번: 영화감독 숌

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

www.acmicpc.net

 

 

시도 1 - 성공

n = int(input())
num = 666
i=0
arr = [0]*10001

while(True):
    if i==n:
        print(arr[i])
        break;

    if str(num).find("666")>=0:
        i+=1
        arr[i]=num
    num+=1

 

n의 범위가 10000이므로 크기가 10001인 배열 만들었다. (인덱스 생각하기 귀찮아서 0~10000중에 0번째 인덱스 값은 비워두고 계산하려고 10001로 설정함)

 

 

666이 최소이므로 666부터 1씩 증가시키고, 문자열로 변환 후에 666을 찾고, 666이 있으면 arr 리스트의 i번째에 저장한다.

i도 666이 있는 숫자가 나타날 때마다 증가시켜주고, i와 n이 일치하면 arr에서 해당 인덱스의 값을 출력하고 break로 반복문 탈출.

 

 

find()가 조금 오래걸리는 거 같아서 in으로 다시 제출해봤다.

 

시도 2 - 성공

n = int(input())
num = 666
i=0
arr = [0]*10001

while True:
    if i==n:
        print(arr[i])
        break;

    if "666" in str(num):
        i+=1
        arr[i]=num
    num+=1

 

나름 간단하게 풀었다고 생각하는데 다시간 956ms... 다른 사람들은 65..?

나랑 코드 거의 똑같은 사람도 있는데 이분은 arr을 안만들고 바로 출력했다. 

생각해보니 배열 굳이 안만들어도 되네..? 아무튼 ,, 

 

나랑 안 비슷한 사람은 코드 복잡해서 해석 못하겠다 ㅠ 그래서 그냥 맞은 거에 만족하고 패스 .. 

 

반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함