반응형
https://school.programmers.co.kr/learn/courses/30/lessons/42746
문제 설명
0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요.
예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 수는 6210입니다.
0 또는 양의 정수가 담긴 배열 numbers가 매개변수로 주어질 때, 순서를 재배치하여 만들 수 있는 가장 큰 수를 문자열로 바꾸어 return 하도록 solution 함수를 작성해주세요.
더보기

입출력 예
제한사항
- numbers의 길이는 1 이상 100,000 이하입니다.
- numbers의 원소는 0 이상 1,000 이하입니다.
- 정답이 너무 클 수 있으니 문자열로 바꾸어 return 합니다.
입출력 예

풀이
아이디어 : 정렬
풀이 1 : 테스트 2 실패
def solution(numbers):
answer = ''
numbers = sorted(map(str,numbers), key=lambda x:x[0], reverse=True)
for i in numbers:
answer += "".join(i)
print(answer)
return answer
풀이 설명
1. numbers => str로 변경, 첫째자리 수 기준 내림차순 정렬
2. 문자 이어붙이기
풀이 2 : 성공
def solution(numbers):
answer = ''
#1,2
numbers = sorted(map(str,numbers), key=lambda x:x*4, reverse=True)
#3.
for i in numbers:
answer += "".join(i)
#4.
return str(int(answer))
풀이 설명
1. numbers => str로 변경, 첫째자리 수 기준 내림차순 정렬
2. numbers의 원소 : 0~1000. 4자리까지 늘리면 비교가 완료되지 않을까?
2-1. 3333, 34, 30 => 34, 3333, 30
3. 문자 이어붙이기
4. 정답(str(answer)만 하면 000 => 000으로 출력되어서 실패. 000 => 0(int) => 0(str)로 나와야 함
반응형
'Algorithm > programmers(python)' 카테고리의 다른 글
[programmers] 기능개발, 42586 (0) | 2024.04.21 |
---|---|
[programmers] 같은 숫자는 싫어, 12906 (1) | 2024.04.20 |
[programmers] 신고 결과 받기, 92334 (0) | 2024.04.13 |
[programmers] 멀리 뛰기, 12914 (0) | 2024.04.10 |
[programmers] H-Index, 42747 (0) | 2024.04.08 |