반응형
문제: https://programmers.co.kr/learn/courses/30/lessons/42746
맨 처음 직관적으로 드는 생각:
주어진 숫자로 가장 큰 수를 만드려면, 주어진 숫자들을 내림차순으로 정렬하면 되지 않을까?
ex) 1, 3, 9 가 주어졌을 때 가장 큰 수는 931
하지만 숫자들이 일의 자리를 넘어가게 되면 문제가 생긴다.
ex) 1, 3, 10 이 주어졌을 때 가장 큰 수는 3110 (위의 생각대로만 배치하면 1031)
문제는 점점 더 복잡해진다.
예를 들어 123, 123111 이 주어진 경우 가장 큰 수는 123123111 이다.
하지만 123, 123999 가 주어진 경우 가장 큰 수는 123999123이다.
즉 123xxx와 123이 있을 때, xxx가 123보다 작으면 123xxx가 뒤로가고, xxx가 123보다 크면 123xxx가 앞으로 가게 된다. xxx가 정확히 123인 경우에는 어떻게 배치하든 상관없게 된다.
따라서 처음에는 xxx를 추출해서 123과 비교하는 방식으로 해결해보려했지만, 더 간단한 방법이 있다. 그냥 123xxx123과 123123xxx를 비교해서 더 큰 경우를 선택하면 된다.
정의한 compare 함수로 sort한 후, 숫자형 자료를 문자열로 변환한다.
join으로 합치고 리턴
str(int()) 연산은 0000 같은 문자열을 0으로 바꿔주기 위해 넣음
그리고 파이썬이라서 가능한 숏코딩..
반응형
'알고리즘 > 문제풀이' 카테고리의 다른 글
[프로그래머스] H-index (0) | 2022.06.21 |
---|---|
[프로그래머스] 이중 우선순위 큐 (0) | 2022.06.19 |
[프로그래머스] 기능개발 (0) | 2022.05.09 |
[프로그래머스] 더 맵게 (0) | 2022.05.08 |
[프로그래머스] 베스트앨범 (+파이썬 테크닉) (0) | 2022.03.09 |