본문 바로가기
개발/Algorithm 문제 풀이

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

by DenverAlmighty 2022. 5. 9.
반응형

https://programmers.co.kr/learn/courses/30/lessons/42746?language=python3 

 

코딩테스트 연습 - 가장 큰 수

0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰

programmers.co.kr

 

 

 

풀이

numbers 원소는 int형이어서 str 로 바꾸고

앞글자부터 큰 값이 맨 앞으로 가게 정렬한다

그리고 순서대로 answer에 이어붙이고

0000같은 케이스때문에 int로변환했다가 다시 str로 바꿔서 return 한다.

 

* answer=''.join(numbers) 보다는 for += 이 조금 더 빠르다

 

* 테스트케이스 3번 결과가 이상하다

6이들어가는 원소는 아래 3개인데

565 566 56

 

566 565 다음 6555555554954544

65가 나올 수 없다

입력 값 [555, 565, 566, 55, 56, 5, 54, 544, 549]
기댓값 "5665655655555554954544"
실행 결과 실행한 결괏값 "5665656555555554954544"이(가) 기댓값 "5665655655555554954544"와(과) 다릅니다.
def solution(numbers):
    answer = ''
    numbers = list(map(str,numbers))
    numbers.sort(key=lambda x:x*4, reverse=True)
    for n in numbers:
        answer += n   
    answer=str(int(answer))
    return answer
728x90
반응형