문제 설명
함수 solution은 정수 n을 매개변수로 입력받습니다. n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요. 예를들어 n이 118372면 873211을 리턴하면 됩니다.
제한 조건- n은 1이상 8000000000 이하인 자연수입니다.
118372 | 873211 |
내가 푼 풀이
def solution(n):
answer = reversed(sorted(str(n)))
answer = int("".join(i for i in answer))
return answer
다른 사람의 풀이
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
병합정렬을 직접 코드로 작성하셨네요. 대단하십니다!
def solution(n):
answer = ''
lst = []
while n > 0:
r = n % 10
n = n // 10
lst.append(r)
lst.sort()
lst.reverse()
for j in range(0, len(lst)):
answer += str(lst[j])
return int(answer)
def solution(n):
num=list(str(n))
num.sort(reverse=True)
answer=" "
for k in num:
answer+=str(k)
return int(answer)
배운 점
"".join(리스트) 혹은 "".join(i for i in 리스트) 같은 방법으로 리스트를 문자열로 다시 병합 가능함
'STUDY 기록 > 코테기록' 카테고리의 다른 글
[프로그래머스] 자릿수 더하기 (0) | 2022.06.19 |
---|---|
[프로그래머스] 자연수 뒤집어 배열로 만들기 (0) | 2022.06.19 |
[프로그래머스]제일 작은 수 제거하기 (0) | 2022.06.19 |
[프로그래머스] 짝수와 홀수 (0) | 2022.06.19 |
[프로그래머스] 콜라츠 추측 (0) | 2022.06.19 |
댓글