문제 설명
함수 solution은 정수 n을 매개변수로 입력받습니다. n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요. 예를들어 n이 118372면 873211을 리턴하면 됩니다.
제한 조건
n
은 1이상 8000000000 이하인 자연수입니다.
입출력 예
n | return |
---|---|
118372 | 873211 |
<내코드>
def solution(n):
list_n = list(map(int, str(n)))
sorted_n = sorted(list_n, reverse=True)
str_n = list(map(str,sorted_n))
result = ''.join(str_n)
return int(result)
1. 헤맨부분
- list(map()) 으로 풀었는데 이 방법을 짧은 기간 내 또 잊어버림
- 자료형에 대한 변환을 잊어버림
=> 문자열 다루는 방법에 대해서 잊어버림
예) join() / split()
- join, split 에 대한 용도를 잊어버림
=> join()은 리스트를 문자열로 해줌
=> split()는 문자열을 리스트로 해줌
<모범사례>
def solution(n):
# n을 문자열로 변환하여 각 자릿수를 리스트로 만듦
digits = list(str(n))
# 각 자릿수를 내림차순으로 정렬
digits.sort(reverse=True)
# 정렬된 자릿수를 다시 하나의 문자열로 합침
sorted_number_str = ''.join(digits)
# 문자열을 정수로 변환하여 반환
return int(sorted_number_str)
# 예시 실행
print(solution(118372)) # 출력: 873211
<보충학습>
1. sort 와 sorted 에 대한 차이 명확히 이해
sort() 는 리스트에 대한 메소드이다. 결과에 대해서 따로 리턴하지않고, 리스트 자체에대해서 바로 정렬을 함
sorted는 이터러블한(반복가능한)객체들에 대한 정렬이다. 이 경우 결과에 대해서 따로 리턴을 함
2. list(정수) VS list(문자열)
전자의 경우 정수 자체는 이터러블 하지않으므로 불가능하지만, 문자열을 이터러블하기 때문에 가능함
3. join VS split
join은 리스트를 문자열로 (리스트로 각각 흩어진 것들을 join(뭉쳐서) 문자열이 돼자!)
split는 문자열을 리스트로 쪼개자!!!
'문제풀이 > 일일연습문제' 카테고리의 다른 글
[BST*]99클럽 코테 스터디 13일차 TIL + 0783-search-in-a-binary-search-tree (0) | 2024.08.03 |
---|---|
[sort]99클럽 코테 스터디 12일차 TIL + 프로그래머스/1/12917. 문자열 내림차순으로 배치하기 (0) | 2024.08.02 |
[heap]99클럽 코테 스터디 10일차 TIL + 0789-kth-largest-element-in-a-stream (0) | 2024.07.31 |
[heap*]99클럽 코테 스터디 9일차 TIL + 0506-relative-ranks (0) | 2024.07.31 |
[stack/queue]99클럽 코테 스터디 8일차 TIL + 프로그래머스/2/12909. 올바른 괄호 (0) | 2024.07.29 |