상세 컨텐츠

본문 제목

[programmers] 프로그래머스 가장 큰 수(Python)

Problem Solving/programmers

by HelloMinchan 2020. 6. 19. 05:40

본문

(주)그렙

[programmers] 프로그래머스 가장 큰 수

(Python)

(글쓴날 : 2020.06.19)

 


* programmers, 프로그래머스 문제 Python 언어 풀이입니다.

* 소스 코드의 저작권은 글쓴이에게 있습니다.


 

 

프로그래머스 가장 큰 수


1) 문제

문제 링크 : https://programmers.co.kr/learn/courses/30/lessons/42746

 

코딩테스트 연습 - 가장 큰 수

0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 ��

programmers.co.kr


2) 풀이 과정

* 시간 복잡도 : O(n log n)

 

0 또는 양의 정수가 담긴 배열이 주어졌을 때, 배열 안의 정수들을 이어 붙여 가장 큰 수를 구하는 문제입니다.

 

저의 경우, Python을 사용했습니다.

모든 수가 0이 담겨 있을 경우를 예외 처리한 뒤, 정수들을 문자열로 치환한 후, 3을 곱해 내림차순 정렬하여 문제를 해결하였습니다.

3을 곱한 이유는 원소의 크기가 최대 1,000이므로 최소 천의 자리를 만들기 위함입니다.

예를 들어, 3과 34를 비교하면 34가 앞에 나와야 하지만 3과 30을 비교하면 3이 앞에 나와야 합니다. 이를 만족하려면 천의 자리로 만들어 3333과 3434를 비교하고 3333과 3030을 비교하면 됩니다.


3) 코드

 

* Python 코드

1
2
3
4
def solution(numbers):
    if not sum(numbers):
        return '0'
    return "".join(sorted(map(str, numbers), reverse=True, key=lambda x: x * 3))

 

관련글 더보기

댓글 영역