정수 내림차순으로 배치하기

수이·2025년 3월 11일
0

🟢 코드카타 / PYTHON

목록 보기
20/46
post-thumbnail

함수 solution은 정수 n을 매개변수로 입력받습니다. n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요. 예를들어 n이 118372면 873211을 리턴하면 됩니다.
문제링크

풀이
1. 숫자 > 문자로 변환
2. 반복문으로 빈 리스트에 넣고 큰 순서대로 정렬
3. 빈 문자열 만들고 거기에 추가
4. 다시 문자 > 숫자

def solution(n):
    text = str(n) # 숫자 > 문자
    array = [] # 빈 리스트 생성
    
    for i in text:
        array.append(i) # 리스트에 하나씩 추가 
        array = sorted(array, reverse = True) # 큰순서대로 정렬
        
        new_text = '' # 빈 문자열 추가 
        for i in array: # 리스트 돌면서 하나씩 i에 저장 
            new_text += i # new_text + i = new_text
            answer = int(new_text)
            
    return answer

혹시 간단하게 더 줄일 수 있는 방법이 없을까 해서 강의에서 나온 리스트 컴프리헨션을 사용해보기로 함

def solution(n):
    array = sorted([i for i in str(n)], reverse = True) 
    
    new_text = ''
    for i in array:
        new_text += i
        
    return int(new_text)

어렵다🤣 쓰는 데 한 세월 걸림

다른사람 풀이

def solution(n) : 
    return int("".join(sorted(str(n), reverse=True)))

ㄷㄷ 한 줄로 이렇게 쓰는 게 너무 대단하게 느껴진다

join() 메소드

"구분자".join(리스트)
  • 문자열 합칠 때 넣을 문자
    공백 " " 쉼표"," 없음 ""

예시

n = 118372
sorted_numbers = sorted(str(n), reverse=True)  # ['8', '7', '3', '2', '1', '1']
result = "".join(sorted_numbers)  # "873211"
final_number = int(result)  # 873211
print(final_number)

0개의 댓글

관련 채용 정보