https://programmers.co.kr/learn/courses/30/lessons/42746
코딩테스트 연습 - 가장 큰 수
0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰
programmers.co.kr
풀다가 답이 안나와서 구글링을 통해 제출했다...
def solution(numbers): numbers=list(map(str,numbers)) numbers.sort(key=lambda x:x*3,reverse=True) return str(int(''.join(numbers))) |
1. list(map(str, numbers))를 통해 string으로 바꾸고 list로 변환해준다.
2. numbers,sort(key=lambda x:x*3, reverse=True)
2.1 함수 중 하나인 lambda는 lambda 인자: 표현식 으로 구성되어있다. (ex a=1,b=2 a+b함수 -> (lambda a,b:a+b)(1,2)
2.2 key=sotr조건 (정렬을 목적으로 하는 함수를 값으로 넣는다. lambda를 이용할 수 있다. key 값을 기준으로 정렬되고 기본값 은 오름차순이다.)
2.3 x*3은 numbers 값이 1000이하이므로 3자리로 맞춰주는 것(ex 6,10,2 -> 666,101010,222)
2.4 문자열 비교는 ASCII 값으로 치환되어 정렬되기에 6>2>1순으로 큼
2.5 reverse=True를 해줌으로써 내림차순으로 정렬 됨(6,2,10)
3. return str(int(''.join(num))) 문자열 합쳐주기
3.1 int변환하고 str변환하는 이유는 모든 값이 0일때를 처리하기 위해서..(ex '0000')
참고자료 : https://wooaoe.tistory.com/82
wooaoe님 tistory 블로그
[Python] 프로그래머스 가장 큰수 파이썬 코드
문제 설명 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중
wooaoe.tistory.com
'파이썬알고리즘' 카테고리의 다른 글
20210703#(57) 백준 11727번 2 X n 타일링 2 (다이나믹 프로그래밍) (0) | 2021.07.03 |
---|---|
20210702#(56) 백준 1149번 RGB거리 (다이나믹 프로그래밍) (0) | 2021.07.02 |
20210702#(54) 백준 2309 일곱 난쟁이 (브루트포스) (0) | 2021.07.02 |
20210701#(53) 백준 2231 분해합 (브루트포스) (0) | 2021.07.01 |
20210701#(52) 백준 2798 블랙잭 (브루트포스) (0) | 2021.07.01 |