카테고리 없음

자연수 뒤집어 배열로 만들기

monawa 2022. 10. 5.
728x90

문제 설명

자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열 형태로 리턴해주세요. 예를들어 n이 12345이면 [5,4,3,2,1]을 리턴합니다.

제한 조건
  • n은 10,000,000,000이하인 자연수입니다.
입출력 예nreturn
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

댓글