[프로그래머스] 자연수 뒤집어 배열로 만들기

hyem·2021년 7월 13일
0

Algorithm

목록 보기
3/12
post-thumbnail

아주아주 기본적인 문제이지만 다양한 방법으로 구현할 수 있어서 정리해보았다

문제

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

제한 조건
n은 10,000,000,000이하인 자연수입니다.

입출력 예

nreturn
12345[5,4,3,2,1]



풀이

1. 리스트의 pop, append 활용

: n을 리스트로 만들고, 뒤에서부터 pop해서 새로운 리스트에 넣기

def solution(n):
  num = list(str(n))
  answer = []

  for i in range(len(num)):
      answer.append(int(num.pop()))
      
  return answer

2. 리스트 컴프리헨션과 슬라이싱 활용

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]

3. map, reversed 함수 이용

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'

0개의 댓글