본문 바로가기

Algorithm/Solution

[Python] 백준 1442

 

 

 

 

 

 

solution은 간단하게 받은 수 중에서 가장 큰 수를 n-k개 더 만들어 주고 그 수들로 정렬하면 된다. 

단, 정렬할 때 문제에서 준 예제와 같이 7 3 2 처럼 주어진 숫자가 같은 자리 숫자라면 상관 없지만

9 90 990 과 같은 숫자가 주어졌을 때 문제가 생긴다.

 

가장 큰 수 부터 정렬하면 990 90 9 이지만 실제로 가장 큰 수를 만들기 위해서는 9 990 90 와 같이 정렬되어야 한다.

예전에 풀었던 문제에서 해결 방법을 찾았다!

 

num.sort(key = lambda x: x*10, reverse=True)

 

num의 숫자들은 type이 문자열이다.

이 문제의 최대 범위가 1,000,000,000 이므로 숫자의 최대길이가 10이다. 그러므로 길이 10만큼만 비교하면 된다.

예를 들면, 20과 2가 있을 때 위 코드는 20202020.... 222222..... 를 비교하게 된다. 그래서 "20" < "2" 이다.

 

 

 

Result

import sys

k,n = map(int, sys.stdin.readline().split())
num = []
for i in range(k):
    temp = sys.stdin.readline().strip()
    num.append(temp)
ad = str(max(map(int,num)))
for i in range(n-k):
    num.append(ad)

num.sort(key = lambda x: x*10, reverse=True)
print(''.join(num))

 

 

 

 

'Algorithm > Solution' 카테고리의 다른 글

[Python] 백준 10917  (0) 2021.03.07
[Python] 백준 2089  (0) 2021.03.04
[Python] 백준 1442  (0) 2021.02.25
[Python] 백준 6549  (0) 2021.02.20
[Python] 백준 2606  (0) 2020.09.01
[Python] 백준 1260  (0) 2020.08.27