코딩테스트 연습 - 자연수 뒤집어 배열로 만들기 | 프로그래머스 스쿨 (programmers.co.kr)
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제
자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열 형태로 리턴해주세요.
예를들어 n이 12345이면 [5,4,3,2,1]을 리턴합니다.
제한 조건
n은 10,000,000,000이하인 자연수입니다.
입출력 예
n | return |
12345 | [5,4,3,2,1] |
풀이
아이디어 : n을 str로 바꾸어서 한자리씩 가져오고 그걸 뒤집은 다음에 정수로 바꿔주기.
# 1
def solution(n):
str_n = str(n)
str_list = [int(x) for x in str_n]
answer = str_list[::-1]
return answer
리스트 컴프리헨션 익숙해질겸 사용해봤다.
숫자로 주어진 n을 str로 바꾸고 for문에 넣어서 각각의 요소를 뽑아주고 다시 int를 씌워줬다.
그리고 [::-1] 로 인덱싱을 해서 요소를 역순으로 뽑아왔다.
(인덱싱할 때, [시작:끝:간격] 이렇게 된다. )
# 2
def solution(n):
reverse = [x for x in str(n)[::-1]]
answer=list(map(int,reverse))
return answer
다시 복습해 보면서 이번에는 map 함수를 써봤당.
이번에는 str로 바꾸고 바로 역순으로 요소를 뽑아왔다.
그리고 map에 역순으로 바꾼 리스트를 넣고, 전체에 int 함수를 적용해주었다.
순서와 함수만 조금 다르고 결국 같은 코드이다.
# 3
def solution(n):
answer=list(map(int,[x for x in str(n)]))
answer.reverse()
return answer
이번에는 인덱싱말고 reverse() 메소드로 역순으로 뽑아왔다.
n을 str로 바꿔서 1개씩 뽑아온 뒤, 다시 int로 바꿔주고 그걸 reverse()로 역순으로 정렬했다.
# 4
def solution(n):
answer=[int(x) for x in reversed(str(n))]
return answer
이거는 reverse() 메소드가 아닌 reversed() 함수를 이용했다.
n을 str로 바꾸고 바로 reversed()함수를 사용하여 문자열을 역순으로 정렬했다.
이후에 이 문자열을 숫자로 바꾸면 끝
reverse()는 리스트의 메소드이기 때문에 리스트에서만 사용할 수 있다.
(리스트 자체를 변경하며 반환값은 없다.)
반면 reversed()는 그냥 내장함수이기 때문에 모든 이터러블한 객체에 대해서 사용 가능하다.
(새로운 객체를 생성하고, 원본은 변하지 않는다.)
앞으로 풀면서 좀 오래걸렸거나, 다른 코드로 풀어본 경우에는 포스팅 올려볼 예정
이터러블 vs 이터레이터,
메소드 vs 내장함수,
객체 정의에 대해서 포스팅 해야하는데,,, 곧 올릴 예정이다,,,
'문제풀이 > 프로그래머스' 카테고리의 다른 글
[프로그래머스 Lv.1] 두 정수 사이의 합 (Python) (0) | 2024.07.09 |
---|---|
[프로그래머스 Lv.1] 정수 내림차순으로 배치하기 (Python) + sort(), join()함수 (0) | 2024.07.08 |
[프로그래머스 Lv.1] x만큼 간격이 있는 n개의 숫자 (Python) (0) | 2024.07.08 |
[프로그래머스 Lv.1] 약수의 합 (Python) (0) | 2024.07.08 |
[프로그래머스 Lv.1] 자릿수 더하기 (Python) (0) | 2024.07.08 |