[프로그래머스][LV.1] 정수 내림차순으로 배치하기 | python3
2025. 1. 16. 14:01ㆍ프로그래머스/LV.1
문제 링크: 정수 내림차순으로 배치하기
문제 설명
문제 설명
함수 solution은 정수 n을 매개변수로 입력받습니다. n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요. 예를들어 n이 118372면 873211을 리턴하면 됩니다.
제한사항
- n은 1이상 8000000000 이하인 자연수입니다.
문제 풀이
정수 n을 문자열로 변환해서 변수에 저장한다. 문자열로 정렬한다. sorted 함수는 리스트로 반환하기 때문에 .join으로 문자열로 만들어준다.
내코드
def solution(n):
answer = ''
for s in str(n):
answer+=s
answer=int(''.join(sorted(answer,reverse=True)))
return answer
더보기
다른사람풀이
def solution(n):
ls = list(str(n))
ls.sort(reverse = True)
return int("".join(ls))
list(str(n)) 을 하면 바로 리스트로 변환된다니...
def merge(left, right):
result = []
while len(left) > 0 or len(right) > 0:
if len(left) > 0 and len(right) > 0:
if left[0] >= right[0]:
result.append(left[0])
left = left[1:]
else:
result.append(right[0])
right = right[1:]
elif len(left) > 0:
result.append(left[0])
left = left[1:]
elif len(right) > 0:
result.append(right[0])
right = right[1:]
return result
def mergeSort(arr):
if len(arr) <= 1:
return arr
mid = len(arr) // 2
left = arr[:mid]
right = arr[mid:]
left = mergeSort(left)
right = mergeSort(right)
return merge(left, right)
def solution(n):
arr = list(str(n))
n = int(''.join(mergeSort(arr)))
return n
병합 정렬을 직접 코드로 구현한 거라고 한다. 공부 필요
이 부분은 나중에 추가로 정리해서 올려야 할 것 같다
'프로그래머스 > LV.1' 카테고리의 다른 글
[프로그래머스][LV.1] 콜라츠 추측 | python3 (0) | 2025.01.16 |
---|---|
[프로그래머스][LV.1] 서울에서 김서방 찾기 | python3 (0) | 2025.01.16 |
[프로그래머스][LV.1] 정수 제곱근 판별 | python3 (0) | 2025.01.16 |
[프로그래머스][LV.1] 자연수 뒤집어 배열로 만들기 | python3 (0) | 2025.01.16 |
[프로그래머스][LV.1] 두 정수 사이의 합 | python3 (0) | 2025.01.16 |