ProblemSolving/정렬

프로그래머스 가장 큰 수

OSNIM 2022. 5. 6. 15:50
반응형

Level 2 정렬

 

문제 : https://programmers.co.kr/learn/courses/30/lessons/42746#

 

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

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

programmers.co.kr

 

제출 코드

def solution(numbers):
    answer = ''
    arr = [str(x)*3 for x in numbers]
    arr.sort(reverse = True)
    
    for num in arr:
        temp = num[:len(num)//3]
        answer += temp
        
    answer = str(int(answer))
    return answer

정수가 최대 1000이므로 정수의 패턴을 앞에서부터 3개까지 비교할 수 있게 x3을 했습니다.

num[:len(num)//3] 때문에 성능이 뛰어나지 않은 것 같습니다. 하지만 앞에서부터 자르는 다른 방법을 몰라서 일단 이렇게 제출 했습니다. 

 

좋아요를 가장 많이 받은 코드

def solution(numbers):
    numbers = list(map(str, numbers))
    numbers.sort(key=lambda x: x * 3, reverse=True)
    return str(int(''.join(numbers)))

 

 

비교할 때만 x3 을 해주고 그 안에서 바로 정렬을 하는 것을 보고 sort의 인자 설정 방법을 다시 배웠습니다.

또한 join을 통해 문자로 리스트를 하나의 문자로 만드는 것을 복습할 수 있었습니다.

 

 

 

반응형