본문 바로가기
Coding Test/Sorting

[Sorting] 가장 큰 수

by Hwanin99 2024. 6. 13.

문제: 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로 하면 또 답이 다르게 나오는데 왜 그런지 모르겠다.
  • 정렬했으면 합친다.
    • ’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