728x90
반응형
17. 자연수 뒤집어 배열로 만들기
문제 자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열 형태로 리턴. 예를들어 n이 12345이면 [5,4,3,2,1]을 리턴
제한 n은 10,000,000,000이하인 자연수
풀이1. .append() , .reverse() 사용
def solution(n):
answer = []
for i in str(n):
answer.append(int(i))
answer.reverse()
return answer
오답
1) 문자화 -> 정수화 -> append -> 리스트니까 reverse()
2) answer.reverse()의 들여쓰기 위치 주의
들여쓰기의 중요성 | |
def solution(n): answer = [] for char in str(n): answer.append(int(char)) answer.reverse() return answer |
def solution(n): answer = [] for i in str(n): answer.append(int(i)) answer.reverse() return answer |
for문 반복할 때마다 reverse를 처리함 문제는 예를 들어 n = 123이면 1 추가 > 1 reverse > 1 2 추가 > 1, 2 reverse > 2, 1 3 추가 > 2, 1, 3 reverse > 3, 1, 2가 되어버림! |
for문이 다 끝나고 난 뒤,그 최종 묶음 리스트에 대해서 딱 1번 reverse 진행 |
3) ★
.sort() 와 .reverse() 는 리스트 자체를 직접 변경하고, 반환값은 None임. 따라서, return전에 먼저 호출해서 리스트를 정렬/역순 바꾼 후에, return answer(리스트 자체)를 하면 결과 나옴
그러나 [::-1] 과 sorted(list)의 경우, 아예 새로운 리스트를 반환하므로 return 에 바로 쓸 수 있음
풀이2. 리스트 컴프리헨션, [::-1] 사용
def solution(n):
return [int(i) for i in str(n)[::-1]]
728x90
반응형
'오답노트 > PYTHON_2차' 카테고리의 다른 글
(16번) .append() -- 리스트 함수들 (0) | 2025.06.17 |
---|---|
(15번) 한 줄 쓰기 - next(이터레이터), min(), 리스트 인덱싱 (2) | 2025.06.17 |
(14번) 한 줄 쓰기 - sum(for 문 > if 문) (0) | 2025.06.17 |
(13번) 한 줄 쓰기, sum(), map() (0) | 2025.06.17 |
(11번) if문 - 한 줄 쓰기(True False 활용) (0) | 2025.06.17 |