문제: https://school.programmers.co.kr/learn/courses/30/lessons/42746
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
코드
def solution(numbers):
numbers = [str(i) for i in numbers]
numbers.sort(key=lambda x: (x*3), reverse=True)
answer = str().join(numbers)
if list(answer)[0]=='0':
return '0'
return answer
- 일단 numbers를 문자열로 바꾼다.
- 문자열로 바꿔야 편하기도 하고 int형으로 할 경우 리스트화하는 과정에서 계속 에러가 난다.
- numbers를 3번 씩 반복하여 내림차순으로 정렬한다.
- ex) numbers = [’6’, ‘10’, ‘2’] 3번 반복: [’666’, ‘101010’, ‘222’] 3번 반복한 값을 기준으로 내림차순 정렬[’666’, ‘222’, ‘101010’] numbers = [’6’, ‘2’, ‘10’]
- 문자열은 ASCII 코드로 변환된 후에 정렬한다. 이때, 첫 번째 인덱스끼리 비교한다.
- sorted로 하면 또 답이 다르게 나오는데 왜 그런지 모르겠다.
- ex) numbers = [’6’, ‘10’, ‘2’] 3번 반복: [’666’, ‘101010’, ‘222’] 3번 반복한 값을 기준으로 내림차순 정렬[’666’, ‘222’, ‘101010’] numbers = [’6’, ‘2’, ‘10’]
- 정렬했으면 합친다.
- ’6210’
- 전부 0인 경우에 [’000’] 이런 식으로 결과가 나오기 때문에 0 하나만 나오게 if문을 만들어준다.
'Coding Test > Sorting' 카테고리의 다른 글
| [Sorting] H-Index (2) | 2024.06.13 |
|---|---|
| [Sorting] K번째 수 (0) | 2024.06.13 |
| Sorting 개념 (0) | 2024.06.13 |