저고데

[프로그래머스]가장 큰 수 본문

프로그래머스

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

진철 2023. 1. 20. 19:26
728x90
반응형

문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/42746

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

문제를 간략히 요약하자면 다음과 같다.

숫자가 담긴 배열 numbers가 주어질 때, 각 숫자를 그대로 조합하여서 만들 수 있는 가장 큰 수를 반환해야 한다.

 

코드를 작성하기 위한 순서는 다음과 같다.

1. 숫자를 그대로 조합해야하기 때문에, int형인 numbers를 모두 str형으로 바꿔준다.

2. numbers의 최대 숫자는 1000이고 최소 숫자는 0이다. 따라서 모두 세자리로 바꿔주어서 비교해준 후, 내림차순 정렬을 해준다.(만약 배열이 [111, 9]라면 [111,999]가 되고 이를 정렬하면 999가 더 크므로 9111이 제일 큰 수가 된다.)

def solution(numbers):
    answer = ''
    numbers = list(map(str, numbers)) #1번
    numbers.sort(key=lambda x:x*3, reverse=True) #2번 : numbers를 str형으로 전환하였으므로 ASCII코드값으로 정렬을 하게 된다.
    for i in numbers:
        answer+=i
    return str(int(answer)) #answer를 바로 반환하지 않고 int형으로 반환 후, 한번 더 str형으로 반환하는 이유는 '000'같은 값이 존재하기 때문이다.

람다함수를 활용하여 각 배열을 3자리로 만들어서 정렬하는 것이 본 풀이에서의 핵심이었다.

람다함수는 배열을 정렬함에 있어서 다양하게 활용할 수 있으므로 공부가 필수적일 듯하다.

728x90
반응형