본문 바로가기
알고리즘/[python] 백준 BOJ

[python] 백준 1422 숫자의 신

by Alan_Kim 2023. 4. 5.
728x90
반응형

https://www.acmicpc.net/problem/1422

 

1422번: 숫자의 신

첫째 줄에 K와 N이 공백을 사이에 두고 주어진다. K와 N은 각각 50보다 작거나 같은 자연수이고, N은 K보다 크거나 같다. 둘째 줄에는 K개의 수가 한 줄에 하나씩 주어진다. 각 수는 1,000,000,000보다

www.acmicpc.net

 

문제 해결

  • 모든 수는 1번 이상씩 사용
  • 하지만 더 사용하는 숫자는 오직 하나이고 가장 큰 수일 것이다.(이유는 첫번째는 자리수가 크기 때문이고 두번째는 자리수가 같으면 앞에 큰수가 오는 것이 큰수이기 때문에 많이 사용할 수록 좋다.)
  • 따라서 가장 큰 수를 변수로 저장한 다음 n-k 만큼 추가적으로 리스트 안에 저장하면 된다.
  • 문제는 숫자 배열이다. 모든 숫자는 $10^{9}$ 이하이기 때문에 숫자를 문자열로 놓고 10번 반복한 숫자들을 보고 큰 수대로 배열하면 된다.

CODE

k, n = map(int, input().split())
nums = []
plus = 0
for _ in range(k):
    temp = input()
    nums.append(temp)
    plus = max(plus, int(temp))
for i in range(n-k):
    nums.append(str(plus))
nums.sort(key=lambda x: x*10, reverse=True)
ans = ''.join(nums)
print(int(ans))
728x90
반응형

댓글