Algorithm/프로그래머스

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

에릭 Kim 2023. 5. 25. 16:16
반응형

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

 

프로그래머스

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

programmers.co.kr

 

소스코드

 

풀이

★ 입력 받은 리스트의 원소들을 문자열 형태로 바꿔주는 sort 과정에서 문자열의 대소비교를 사용하기 때문입니다. 문자열의 대소비교는 문자의 첫번째 인덱스부터 아스키코드로 변환해 대소비교를 하게 됩니다. 즉 "6" > "10"이 성립됩니다. 

 

★ 정렬하는 과정에서 lambda 함수를 사용하는데 x*3을 해주는 이유는 numbers의 원소가 1이상 1000이하이기 때문에 최대 3자릿수까지 비교할 수 있기 때문입니다. 

 

ex) numbers = [3,30,34,5,9], 정렬 후 => n_numbers = ['3333','303030','343434','555','999'] 형태로 나오고 가장 큰 수를 만들기 위해 내림차순으로 정렬하게 되면 최종적으로 '9', '5', '34', '3' ,'30 형태가 나오게 됩니다 ! 

 

★ 위와 같은 과정을 거쳤다면 대부분의 테스트 케이스는 통과할 수 있습니다. 하지만 numbers = [0,0,0,0]일 경우에는 결과값이 '0000'으로 나오게 되는데, 0000이라는 수는 없기 때문에 저희가 출력한 값을 정수 형태로 바꾼 뒤, 다시 문자열 형태로 바꿔서 출력해야 합니다. ( '0000' => 0 => '0' )

 

 

반응형