알고리즘

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

예림밈 2026. 2. 26. 09:47
728x90

문제 : 

0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요.

예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 수는 6210입니다.

 

풀이 : 

  • 직관적으로는 앞자리가 큰 순서대로 정랼하는게 핵심이지만, 단순히 정렬하면  ["34","30","3"] -> 34303 이지만, 실제 정답은 34330 이기 때문에 단순히 정렬하면 안된다. 
  • 이 문제는 문자열을 3번 반복해서 비교하는 방식으로 풀면된다 ( 3-> 333 , 30 -> 303030)
  • 파이썬은 문자열을 비교할 때 전체 길이를 보지 않고, 왼쪽 첫 번째 글지부터 하나씩 비교하기 때문에 가능하다
    • 333 > 303030 이 더 크게 되는 이유이다 (3 vs 3 , 3 vs 0 .. 이런식으로 비교함)
# 문자열을 3번 반복해서 비교 
def solution(numbers):
    numbers=list(map(str,numbers))
    numbers.sort(key=lambda x : x*3, reverse=True)
    
    return str(int(''.join(numbers)))

 


문제 출처 : https://school.programmers.co.kr/learn/courses/30/lessons/42746

728x90

'알고리즘' 카테고리의 다른 글

[프로그래머스] 모의고사  (0) 2026.03.03
[프로그래머스] H-Index  (0) 2026.02.26
[프로그래머스] 주식 가격  (0) 2026.02.25
[프로그래머스] 프로세스  (0) 2026.02.23
[프로그래머스] 전화번호 목록  (0) 2026.02.20