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

728x90
반응형

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

 

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

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

programmers.co.kr

# 조건을 제대로 읽지 않아 엄청 어렵게 생각했던 문제이다. 처음에 정렬하는 방법은 제대로 생각했다.

   (가장 큰 숫자의 자리수에 맞춰 나머지 숫자들의 자리수를 맞춘다음 정렬하는 것)

# 여기서 numbers의 원소가 0이상 1000이하라고 되어있는데, 이걸 읽지 않아서 가장 일일이 가장

   큰 숫자의 자리수를 len함수로 구하고 나머지 수들의 자리수 역시 다 구해서 자리수를 맞춰주었다.

 

# numbers의 원소가 1000이하이니까 그냥 어떤 수가 들어오든 *4을 해주면 되는 것이었다. 

   (나는 *4로 했지만, 나중에 생각해보니 *3만 해도 풀린다.)

def solution(numbers):
    answer = ''
    tmp = []
    for i, num in enumerate(numbers):
        # tmp에 [num을 4번 곱한 것, index] append해줌
        tmp.append([str(num) * 4, i])
    # tmp를 tmp[0]기준으로 내림차순 정렬
    tmp.sort(reverse = True) 
    # answer에 tmp의 i(인덱스)순으로 numbers[i]를 더해줌
    for i in tmp:
        answer += str(numbers[i[1]])
    
    # numbers의 원소가 모두 0일때는 "0" return, 아니면 answer을 return
    return "0" if answer < "1" else answer

(프로그래머스 level: 2)

728x90
반응형
TAGS.

Comments