- [알고리즘][파이썬] 백준_1436_영화감독 숌2021년 12월 13일 13시 39분 41초에 업로드 된 글입니다.작성자: DandyNow728x90반응형
https://www.acmicpc.net/problem/1436
숫자 '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반응형'CS > 코딩 테스트' 카테고리의 다른 글
[알고리즘][파이썬] 백준_10989_수 정렬하기 3 (0) 2021.12.14 [알고리즘][파이썬] 백준_2750, 2751_수 정렬하기 1~2 (0) 2021.12.14 [Python] 점프 투 파이썬_종합문제_Q16_모스 부호 해독 (0) 2021.12.13 [Python] 점프 투 파이썬_종합문제_Q15_Duplicate Numbers (0) 2021.12.10 [Python] 점프 투 파이썬_종합문제_Q14_문자열 압축하기 (0) 2021.12.09 다음글이 없습니다.이전글이 없습니다.댓글