아주아주 기본적인 문제이지만 다양한 방법으로 구현할 수 있어서 정리해보았다
문제 설명
자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열 형태로 리턴해주세요. 예를들어 n이 12345이면 [5,4,3,2,1]을 리턴합니다.
제한 조건
n은 10,000,000,000이하인 자연수입니다.
입출력 예
n | return |
---|---|
12345 | [5,4,3,2,1] |
: n을 리스트로 만들고, 뒤에서부터 pop해서 새로운 리스트에 넣기
def solution(n):
num = list(str(n))
answer = []
for i in range(len(num)):
answer.append(int(num.pop()))
return answer
def solution(n):
answer = [int(i) for i in str(n)][::-1]
return answer
💡 리스트 컴프리헨션
# 예)
# for문으로 리스트 만들기
arr = []
for i in range(5):
arr.append(i)
print(arr) # [0,1,2,3,4]
# list comprehension으로 만들기
arr = [i for i in range(5)]
print(arr) # [0,1,2,3,4]
💡 슬라이싱
a[start : end : step]
(a: 연속되는 객체. 리스트, 튜플, 문자열 등)
# 예)
a = [1,2,3,4,5,6]
a[2:4] # [3,4]
a[1::2] # [2,4,6]
a[::-1] # [6,5,4,3,2,1]
a[-2::-2] # [5,3,1]
def solution(n):
return list(map(int, reversed(str(n))))
💡 map
리스트의 요소를 지정된 함수로 처리해주는 함수
# 예)
a = [1.2, 2.5, 3.7, 4.6]
a = list(map(int, a))
print(a) # [1, 2, 3, 4]
b = list(map(str, range(10)))
print(b) # ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']
💡 reverse / reversed
reverse : 리스트에서 제공하는 함수.
값을 반환하지 않고 그냥 해당 리스트를 뒤집어줌.
# 예)
a = ['a', 'b', 'c']
b = a.reverse()
print(b) # None
print(a) # ['c', 'b', 'a']
reversed : 파이썬 내장함수.
reversed 객체를 반환.
# 예)
a = ['a', 'b', 'c']
print(reversed(a)) # <list_reverseiterator object at 0x000002738245C8B0>
리스트나 문자열로 바꾸어 사용하려면
a = ['a', 'b', 'c']
print(list(reversed(a)) # ['c', 'b', 'a']
print(''.join(reversed(a))) # 'cba'