Algorithm/백준

[백준 알고리즘] 16496번: 큰 수 만들기 (Python)

에릭 Kim 2023. 8. 11. 15:19
반응형

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

 

16496번: 큰 수 만들기

첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 리스트에 포함된 수가 주어진다. 수는 공백으로 구분되어져 있고, 1,000,000,000보다 작거나 같은 음이 아닌 정수 이다. 0을 제외한 나

www.acmicpc.net

 

소스코드

 

 

풀이

★ 핵심은 입력 받은 리스트의 원소들을 문자열 형태로 바꾸고(사전 순으로 크기를 비교하기 위헤), 대소 비교를 통해 정렬해주는 것입니다 ! 

ex) 

[3,30,34,5,9]를 문자열 형태로 바꾼 뒤,  lambda x:x*3을 기준으로 내림차순 정렬하게 되면,

 

[999,555,343434,333,303030] => [9,5,34,3,30] 형태로 정렬됩니다 ! 

 

★ 이 때, 해당 문자열에 10을 곱한 값을 기준으로 정렬하는 이유는 주어진 수가 1,000,000,000보다 작거나 같은 수이기 때문입니다. 즉 입력 값으로 한 자릿수의 값과 10자릿수를 비교하기 위해선 한 자릿수에 10을 곱해야 합니다.

ex) 

[4,54,56,100,1,000,000,000]

 

위와 같은 입력이 주어졌을 때, 4와 1,000,000,000의 대소비교를 하기 위해선 '4'에 10을 곱한 값을 알아야 합니다.

'4' * 10 = 4444444444 이 되고 이는 '1000000000' * 10 보다 큰 값이 됩니다. ('1,000,000,000'에 10을 곱해도 사전 순으로 '4'보다 작음) 

반응형