데이터분석 기록일지

문제풀이/프로그래머스

[프로그래머스 Lv.1] 정수 내림차순으로 배치하기 (Python) + sort(), join()함수

야하루 2024. 7. 8. 21:28

코딩테스트 연습 - 정수 내림차순으로 배치하기 | 프로그래머스 스쿨 (programmers.co.kr)

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

문제

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

 

 

제한 조건

n은 1이상 8000000000 이하인 자연수입니다.

 

 

입출력 예
n return
118372 873211

 

 

 


풀이

 

아이디어: 숫자를 문자열로 바꾸어 리스트에 넣어준다음에, sort() 메소드를 사용.

 

# 풀이1
def solution(n):
    answer = [x for x in str(n)]
    answer.sort(reverse=True)
    answer = ''.join(answer)
    return int(answer)

숫자를 문자열로 바꿔주고 한개씩 리스트에 넣어준 다음, sort()로 정렬해준다.

sort()는 기본이 오름차순이며, parameter인 reverse를 True로 해주면, 내림차순으로 사용할 수 있다. 

 

 

 

# 풀이2
def solution(n):
    array = sorted([i for i in str(n)], key =int, reverse=True)
    answer = int(''.join(array))
    return answer

이번엔 sorted() 함수를 사용.

 

 

sort(), sorted()
이전의 reverse(), reversed()와 마찬가지로, sort()는 리스트의 메소드이고, sorted()는 내장함수로 이터러블한 객체에 모두 사용할 수 있다.

또한 sort()와 sorted()에는 key라는 parameter도 존재하는데, 이는 어떤 기준으로 정렬할 것인지 기준이 되는 함수를 넣어주는 자리이다. 예를 들어 key=len 을 넣어주면 요소들의 길이를 기준으로 정렬하며, key=int를 숫자를 기준으로 정렬하는 것이다. 특정한 조건으로 설정하고 싶다면 lambda로 함수를 만들어서 사용하면 된다.

 

 

 

join()

join() 은 문자열 메소드로 문자열들을 결합하기 위해 사용된다.

"a".join(B) : 주어진 문자열(a)를 기준으로 하여, 주어진 이터레이터(B) 의 모든 항목을 결합한다.
-> 결과는 당연히 문자열

ex) a에 ""를 넣으면 요소들을 연달아서 붙일 수 있고, " "를 사용하면 한칸씩 띄우며 붙일 수 있다.