2024. 4. 30. 12:12ㆍ코드리뷰
공부하는허딩크 : https://www.youtube.com/live/wAItg8urY5U?feature=shared
일단 말이 길다. 다 떠나서 예제를 보자.
입력이 1이면 666, 2이면 1666, 3이면 2666이다.
쉽게 보면 2부터 666 세자리 앞에 1, 2, 3, 4, 이렇게 붙이면 되는건가? 라는 오해를 할 수 있다.
예제를 다시 보자.
6까지는 5666출력, 187입력시 66666출력, 500입력시 166699출력이다.
다시 문제를 읽어보고 이해를 했다.
단순하게 내가 원하는 순서 -1 + 666이 아니라
666이 들어간 숫자를 차례로 구하면 되는구나. 라는 결론을 내렸다.
즉 입력값이 1부터 6까지는 666, 1666, 2666, 3666, 4666, 5666이다. 이 중간에 666이 나오는 숫자가 없나보다. 계산은 안해봤지만 그렇게 추정을 하자. (언제 다 계산해...)
즉 while로 반복을 돌려서 내가 원하는 입력값에서 멈추도록 설계해 보자.
<첫번째 시도 : 정답. 어? 이렇게 한번에???>
다른 사람들이 어떻게 풀었는지 비교해 보자. => 대부분 비슷한 답들이 많은데 아래 itertools로 해결한 코딩을 분석해보자.
이거 라이브러리 함수 사용으로 깔끔한 모양새다.
product함수로 11개의 숫자와 문자 's'로 5개의 전체 조합을 만들고 s가 포함된 것만 다시 숫자 666으로 바꾼다.
이후에 set()으로 중복 숫자를 제외하고 sort()로 오름차순을 하면 끝.
그런데 여기서 아직도 이해 안되는게 있는데 repeat = 5를 주었는데 이게 이해가 가지 않네.
repeat = 7을 하면 메모리 초과가 뜨고, 6, 5는 정답처리가 되고 4이하는 런타임 에러가 나옴.
N의 최대값인 10,000을 입력시 266799가 나오지만 이건 주어진 예시가 아니기 때문에 6자리가 나올거라고 추정을 할 수 있나?
이건 모르겠다.
'코드리뷰' 카테고리의 다른 글
[python_파이썬_pass]백준_2750번_수 정렬하기_풀이 (0) | 2024.04.30 |
---|---|
[python_파이썬]백준_2839번_설탕 배달_풀이 (0) | 2024.04.30 |
[★python_파이썬]백준_1018번_체스판 다시 칠하기_풀이 (0) | 2024.04.28 |
[python_파이썬]백준_19532번_수학은 비대면강의입니다_풀이 (0) | 2024.04.28 |
[python_파이썬]백준_2231번_분해합_풀이 (1) | 2024.04.28 |