영화감독 숌 [ Python ] [ 백준 : 1436 ]

2023. 5. 25. 20:04알고리즘/백준


풀이 및 회고

 

이 문제를 봤을때 문제가 정말 이해가 안되었다. 20분도 넘게 문제만 본 느낌이다.

예제에 10의 자리까지 보여줬으면 쉽게 유추할 수 있었을 것같은데 덕분에 숌만 욕했다. 

최소 666이 포함되어야하고 1666, 2666, ... 6666, 6660, 6661  이런식으로 값이 올라가는 것 같았다.

문제에 대한 구현을 어려워 하던중 페어프로그래밍을 같이하시던 신범님이 list 에 666이 포함된 값을 넣어 반복해 찾는 방법으로 하면 될 것 같다고 아이디어를 내주셨고 풀이에 옮기셨다.

루프를 리스트의 크기가 n 보다 적을때까지 반복하고 루프안에서 i 가 666이 포함된 값이라면 리스트에 값을 넣는다. 

그리고 리스트의 가장 마지막 값을 출력하면 정답이 나온다.

# 영화감독 숌

n = int(input())
i = 0
list = [] # 666 이 포함된 값을 넣을 리스트
while len(list) < n:
    if '666' in str(i): # i 가 666이 포함된 값인지 확인
        list.append(i) # 666이 포함된 값이면 list 에 추가
    i += 1 # i 를 1씩 증가시킨다.
print(list[-1]) # 리스트의 마지막 인덱스값을 출력

문제의 메모리 제한도 넉넉해 풀 수 있었던 방법인 것 같다.

문제 이해가 어렵던 것에 비해 짧은 코드가 나와 오묘하다.

페어 프로그래밍을 왜 하는지에 대한 것이 잘 이해가 되지 않았었는데 페어 프로그래밍을 진행함으로서 

서로 부족한 부분을 도와 줄 수 있으며 다양한 방법을 알게되어 혼자 알고리즘을 푸는 것 만큼 .. 음 보다 더 도움이 되는 것 같다.

처음부터 페어 프로그래밍을 제대로 하지 않던것이 조금 아쉽다.