사용 언어 - Python3
문제 - 가장 큰 수
정답
ASCII 문자열 숫자간 크기 비교 정렬 문제 (정답 맞춘 여부 X)
정답 풀이
1. numbers를 str로 바꾼뒤, list 형태로 입력받는다.
2. 6, 10, 2의 크기를 비교한다.
원래 숫자에서 비교하면 10>6>2 이지만, "1062"은 가장 큰 수가 아니다.
문자열 ASCII 값으로 비교했을 때 가장 숫자가 큰 값, 6>2>1 순서대로 해야 "6210" 가장 큰수가 나온다.
x*3 각각의 문자열을 3번 반복한다. 666, 101010, 222
가장 첫번째 인덱스인 6, 1, 2의 ASCII를 비교한다. 6>2>1
이 값을 key조건으로 넣어주고 sort()해준다.
이때, reverse=True를 통해 내림차순을 해주면 6,2,10 순으로 나온다.
3. join 함수를 이용해 int변환 후 str변환해준다.
만약 numbers가 0,0,0 이면 000으로 출력되기 때문에 다시 int로 변환해주어 0으로 만들고 다시 str로 출력해준다.
def solution(numbers):
numbers = list(map(str,numbers))
numbers.sort(key=lambda x:x*3, reverse=True)
return str(int(''.join(numbers)))
레퍼런스
- 정답 참고
- 정답 깃허브
'Algorithm > 정렬' 카테고리의 다른 글
[백준] 24060번 알고리즘 수업 - 병합 정렬 1 (0) | 2023.01.31 |
---|---|
[프로그래머스 lv 2] H-Index (0) | 2023.01.27 |
[프로그래머스 lv 1] K번째수 (0) | 2023.01.27 |
댓글