1436: 영화감독 숌 - Python

beaver.zip·2024년 12월 9일
0

[알고리즘] 백준

목록 보기
24/45

문제

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

풀이 1

N = int(input())
num = 666
cnt = 1

while cnt < N:
    num += 1
    if '666' in str(num):
        cnt += 1
print(num)
  1. while문을 사용해 num을 1씩 증가한다.
  2. str(num)666이 포함됐으면 cnt를 1 증가한다.
  3. cnt == N일 때 while문이 종료되며, 그때의 num을 출력한다.

풀이 2

N = int(input())
i = 666
cnt = 0

while True:
    if '666' in str(i):
        cnt += 1
        if cnt == N:
            print(i)
            break
    i += 1
  • 겉보기엔 풀이 1과 큰 차이 없어보이지만, 약 100ms 절약된다.
  • 이는 cntN을 비교하는 방식의 차이에 기인하는 것으로 보인다.
    • 풀이 1: cnt < N을 매 반복마다 실행
    • 풀이 2: 666이 포함될 때만 cnt == N을 실행
  • 다른 사람들의 풀이를 찾아보니 아래처럼 코드를 작성하던데, 이는 매 반복마다 if문을 한 번씩 더 실행해야해서 비효율적이다.
while True:
    if '666' in str(i):
        cnt += 1
    if cnt == N: # 비효율적
        print(i)
        break
    i += 1
profile
NLP 일짱이 되겠다.

0개의 댓글