[프로그래머스/파이썬] 가장 큰 수 풀이
(Python, sort)
1. 문제
https://school.programmers.co.kr/learn/courses/30/lessons/42746
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
2. 코드
def solution(numbers):
answer = ''
# 1. 사전 값으로 정렬한다.
numbers_str = list(map(str,numbers))
numbers_str.sort(reverse=True)
numbers_str.sort(key=lambda num: num*3, reverse = True) # str에 3을 곱한 값으로 재정렬한다.
# print(numbers_str)
answer = str(int(''.join(numbers_str)))
# 만약 numbers =[0,0] 이라면, 0이 나와야 한다.
# 즉, str만 join하면 00 이런식으로 나오기 때문에, int로 바꿔준 후 str로 다시 바꿔준다.
return answer
3. 풀이
1. numbers를 문자열 배열로 형변환합니다.
numbers_str = list(map(str,numbers))
2. 사전순으로 우선 내림차순 정렬합니다.
numbers_str.sort(reverse=True)
- 결과 : ['9', '5', '34', '30', '3'] (이 상태에서, 30과 3은 위치가 바뀌어야 합니다. )
3. 문자열 원소*3을 하여 내림차순 정렬해 줍니다.
numbers_str.sort(key=lambda num: num*3, reverse = Tru
3.1. numbers의 원소는 0~1000 이하이기 때문에, 각 문자열 *3을 해줍니다.
- 결과 : ['999', '5555, '343434', '303030', '333']
3.2. 그러면 위의 배열에서 사전순으로 큰 숫자가 앞으로 우선적으로 오게 됩니다.
- 결과 : ['9', '5', '34', '3' ,'30' ]
4. 결과 배열을 'join'함수를 이용하여 한번에 합쳐줍니다.
4.1. 이때, numbers가 [0,0]이라면, '00'과 같이 합쳐지기 때문에, int로 형변환해 준 후 다시 str로 형변환해 줍니다.
answer = str(int(''.join(numbers_str)))
4. 마무리
약 1시간 동안 숫자%10을 이용한 정렬로 풀다가, 결국 풀이를 보고 문제를 해결했습니다.
문자*3을 하는 로직을 스스로 생각해 내신 분들은 정말 대단한 것 같아요.
더 분발해야겠습니다..!🥹
[프로그래머스][Python] 가장 큰 수
프로그래머스 '가장 큰 수' 문제 풀이
velog.io
'코딩테스트 > 파이썬' 카테고리의 다른 글
[프로그래머스/파이썬] 피로도 풀이 (dfs, 백트래킹, 완전탐색) (0) | 2025.02.27 |
---|---|
[프로그래머스/파이썬] 더 맵게 풀이 (Python, heap, heapq, heapify, heappush, heappop, 최소힙) (0) | 2025.02.21 |
[백준/30993/파이썬] 자동차 주차 (4) | 2024.01.21 |
[백준/14503/파이썬] 로봇 청소기 (Python,구현) (2) | 2023.04.13 |
[백준/2468/파이썬] 안전 영역 (Python, dfs) (0) | 2023.03.17 |
댓글