-
[💕 프로그래머스] 가장 큰 수Algorithm/1일 1코테 2020. 12. 18. 21:43반응형
Q. 가장 큰 수
programmers.co.kr/learn/courses/30/lessons/42746#
A.
def solution(n): n.sort(key= lambda x: (str(x)*6)[:6], reverse=True) n = map(str, n) return str(int(''.join(n)))
n안에 들어있는 각 요소를 6번씩 곱해준뒤 [:6]으로 출력해 갯수를 맞춰준다.
그리고 이걸 key로 삼아 정렬해주면 큰 순서대로 정렬이 됨!
ex) 30과 34, 3이 있을때
303030, 343434, 333333이므로 34, 3, 30으로 정렬됨.
join해서 출력하는데 int로 한번 바꿔준 이유는 '00000'일시 '0'으로 출력하게 하기 위해서다.
다른사람 풀이
def solution(numbers): numbers = list(map(str, numbers)) numbers.sort(key=lambda x: x*3, reverse=True) return str(int(''.join(numbers)))
해당 풀이를 이용하면
666, 999, 101010일때, 10, 9, 6순으로 정렬되지 않나 생각했는데
문자열 비교연산의 경우엔 첫번째 인덱스인 666[0]인 6과 101010[0]인 1과 222[0]인 2를 ascii숫자로 바꿔서 비교합니다. 물론 같으면, 다음 인덱스도 비교합니다. 비교한 결과 [6, 2, 10]의 순으로 정렬됩니다. [박상희님 댓글]
그렇군...!
반응형'Algorithm > 1일 1코테' 카테고리의 다른 글
[💕 프로그래머스] 소수 만들기 (0) 2020.12.19 [💕 프로그래머스] 소수 찾기 (0) 2020.12.19 [💕 프로그래머스] 구명보트 (0) 2020.12.16 [💕 프로그래머스] 스킬트리 (0) 2020.12.15 [💕 프로그래머스] 최솟값 만들기 (0) 2020.12.15