728x90
문제 설명
자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열 형태로 리턴해주세요. 예를들어 n이 12345이면 [5,4,3,2,1]을 리턴합니다.
제한 조건- n은 10,000,000,000이하인 자연수입니다.
12345 | [5,4,3,2,1] |
def solution(n):
answer = []
a = str(n)
for i in a:
answer.append(int(i))
answer = answer[::-1]
return answer
알아야할점
1.TypeError: 'int' object is not iterable
a = str(n) 이 있는이유
list() 함수 원형은 list([iterable]) 로서
여기서 iterable은 단일 객체가 아닌 반복할 수 있는 문자열, 튜플, 딕셔너리, range() 함수 등을 의미한다
고로 정수 자체는 반복을 할수 없기 떄문에 문자열로 변경해 줘야한다!
2.
문자열 뒤집는법은 여러가지가 있는데
1) 위에 코드로 적은대로 문자열 슬라이싱을 이용하는 법으로
문자열 슬라이싱은 문자열[시작:끝:규칙]으로 이루어져있는데
여기서 규칙에 -1을 넣으면 뒤에서 부터 잘라서 문자열을 내보내기 떄문에
문자열이 뒤집힌다!
2) 반복분을 이용하는 법으로
기존문자열의 문자들을 앞에서 부터 하나씩 가져오면서 뒤집을 문자열을 넣을 변수에 하나씩 앞에 넣어주면된다
def solution(n):
n = str(n)
answer = []
for i in range(len(n)-1, -1, -1):
answer.append(int(n[i]))
return answer
3) 마지막으로 list의 reverse메서드를 이용하는것이다
def solution(n):
answer = list(str(n))
answer.reverse()
answer = list(map(int, answer))
return answer
단 reverse는 리스트에서만 가능하고 int로 list를 만드는 반복작업이 안되므로
문자열로 가서 리스트를 만들고 뒤집고 다시 정수로 바꿔야한다
728x90
댓글