문제 풀이/프로그래머스
[python] 프로그래머스 - 가장 큰 수
동까의 코딩
2025. 3. 20. 18:23
반응형
파이썬 [프로그래머스] - 가장 큰 수
문제 설명
프로그래머스의 가장 큰 수 문제는 주어진 숫자 배열을 이어 붙여 만들 수 있는 가장 큰 수를 반환하는 문제입니다.
예를 들어, [6, 10, 2]
가 주어지면 숫자들을 적절히 이어 붙여 6210
을 만드는 것이 목표입니다.
문제 접근 방식
- 문자열 변환
- 주어진 숫자들을 문자열로 변환합니다.
- 정렬 기준 설정
- 각 숫자 문자열을 반복하여 비교 기준을 만듭니다.
예를 들어, 숫자3
은"333"
으로, 숫자30
은"303030"
으로 변환하여 비교합니다. - 문자열은 첫 인덱스가 같으면 다음 인덱스로 넘어가서 대소비교를 하기 때문에 숫자 '30'이 뒤로 밀립니다.
- 각 숫자 문자열을 반복하여 비교 기준을 만듭니다.
- 내림차순 정렬
- 변환된 문자열들을 내림차순으로 정렬하여, 이어 붙였을 때 가장 큰 수가 나오도록 합니다.
- 결과 조합 및 반환
- 정렬된 문자열들을 이어 붙여 하나의 문자열로 만들고,
int()
를 이용해 불필요한 0을 제거한 후 최종 결과를 문자열로 반환합니다.
- 정렬된 문자열들을 이어 붙여 하나의 문자열로 만들고,
문제 풀이
def solution(numbers):
# 1. 숫자들을 문자열로 변환
s = list(map(str, numbers))
# 2. 각 숫자 문자열을 3번 반복하여 비교 기준 생성, 내림차순 정렬
a = sorted(s, key=lambda x: x * 3, reverse=True)
# 3. 정렬된 문자열들을 이어 붙여 하나의 문자열로 만든 후,
# int로 변환해 불필요한 0을 제거한 뒤 다시 문자열로 반환
return str(int("".join(a)))
주의사항 및 팁
문자열 곱셈 활용:
x * 3은 숫자 문자열 x를 3번 반복하여 비교 기준을 만드는 기법으로,
서로 다른 자리수의 숫자들을 효과적으로 비교할 수 있습니다.
정렬 기준의 중요성:
올바른 정렬 기준을 설정해야 이어 붙였을 때 가장 큰 수를 만들 수 있습니다.
결과값 처리:
최종 결과 문자열을 int()로 변환하면, "0"으로 시작하는 불필요한 경우를 제거할 수 있습니다.
반응형