[백준] 영화감독 숌_1436번

손시연·2022년 4월 10일
0

algorithm

목록 보기
9/18

영화감독 숌_1436번

코드

n = int(input())
end = 666
plus, count = 1, 1
while n != count:
    end += plus
    if "666" in str(end):
        count += 1
print(end)

풀이노트

666부터 1씩 증가하며 "666"을 포함하는 모든 숫자를 찾고, n번째 숫자를 출력
Brute Force 에 충실한 코드이다


개념 정리

1. 리스트 정렬

sorted() : 새로운 정렬된 리스트를 반환하는 함수
sort() : 리스트 자체를 정렬하는 함수
a.sort(reverse=True) : 내림차순 정렬

2. 리스트 중복 제거

  1. list -> set -> list
    단점 : 순서 뒤죽박죽
list(set(a))
  1. for문
my_list = [10, 22, 19, 22, 1, 10, 5]
result = []

for i in my_list:
    if i not in result:
        result.append(i)

print(result)
  1. list comprehension
my_list = [10, 22, 19, 22, 1, 10, 5]
result = []
[result.append(x) for x in my_list if x not in result]
print(result)

틀린 코드

  • 왜 이 방식으로 하면 똑바로 출력이 안되는지, 어떤 부분을 놓친 건지 모르겠음
def makingSix(end):
    arr = []
    for e in end:
        for i in range(10):
            arr.append(int(str(i) + str(e)))
            arr.append(int(str(e) + str(i)))
    arr = list(set(arr))
    arr.sort()
    return arr

n = int(input())-1  # 첫번째 영화 == index(0)
end = [666]

while True:
    end = makingSix(end)
    if len(end) >= 10000:
        print(end[n])
        break

소요시간 : 2시간

profile
Server Engineer

0개의 댓글