honey_pot
[python] 가장 큰 수 본문
https://programmers.co.kr/learn/courses/30/lessons/42746
def solution(numbers):
numbers = sorted(list(map(str, numbers)), key=lambda x: x*3, reverse=True)
return str(int(''.join(numbers)))
- numbers의 숫자를 map을 이용해 string 형변환 후 list로 만든다.
- sorted 함수를 이용해 내림차순 정렬을 하되, 각 numbers의 원소 x를 각각 3번씩 반복한 값을 기준으로 정렬한다.
➡ numbers의 원소가 1000 이하이므로 세 자리 수 이하로 저장하기 위해 3번 반복한다.
문자열 비교는 ASCII 값으로 치환되어 정렬되기 때문에 666, 101010, 222 의 첫번째 인덱스 값으로 비교한다.
6 = 86
1 = 81
2 = 82
➡ 6 > 2 > 1
순으로 정렬된다.
- 이제 numbers 리스트의 데이터는 ['6','2','10'] 순으로 정렬되어 있다.
- join 함수를 이용해 ''를 사이에 연결한 문자열을 int 형변환
- 정답이 너무 클 수 있으니 문자열로 바꾸어 return하라는 조건이 있으므로 string 형변환을 해준다.
- 모든 값이 0일 때를 처리하기 위해 int로 변환한 뒤, 다시 str로 변환한다.
➡ '000' 일 경우 string으로 '000' 일뿐 int형으로는 0이므로 000에서 0으로 만들기 위해 int 형변환 후 string 형변환
'문제 풀이' 카테고리의 다른 글
[python] 행렬의 곱셈 (0) | 2021.09.12 |
---|---|
[oracle] 중성화 여부 파악하기 (0) | 2021.09.10 |
[python] 124 나라의 숫자 (0) | 2021.09.10 |
[python] 소수 만들기 (0) | 2021.09.09 |
[python] 체육복 (0) | 2021.09.09 |
Comments