반응형
Recent Posts
Notice
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 프로그래머스
- 백준 2309
- til
- 큐
- 알고리즘
- 항해99
- 혁펜하임
- easy 딥러닝
- 구현
- BOJ
- 기능개발
- 해시
- 코딩테스트 준비
- 활성화 함수
- 딥러닝
- 백준
- Python
- 99클럽
- leetcode
- softeer
- 개발자 취업
- python 2309
- 99항해
- 코딩테스트준비
- BFS
- 개발자취업
- 스택
- boj 2309
- dfs
- 파이썬
Archives
- Today
- Total
동까의 코딩
[python] 프로그래머스 - 가장 큰 수 본문
반응형
파이썬 [프로그래머스] - 가장 큰 수
문제 설명
프로그래머스의 가장 큰 수 문제는 주어진 숫자 배열을 이어 붙여 만들 수 있는 가장 큰 수를 반환하는 문제입니다.
예를 들어, [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"으로 시작하는 불필요한 경우를 제거할 수 있습니다.
반응형
'문제 풀이 > 프로그래머스' 카테고리의 다른 글
[python] 프로그래머스 - 양과 늑대 (0) | 2025.04.06 |
---|---|
[python] 프로그래머스 - 네트워크 (0) | 2025.04.06 |
[python] 프로그래머스 - 기능개발 (0) | 2025.03.12 |
[python] 프로그래머스 - 베스트 앨범 (1) | 2025.03.12 |
[python] 프로그래머스 - 의상 (0) | 2025.03.12 |