코딩 테스트/프로그래머스

Lv2. 가장 큰 수

  • -
728x90
반응형

문제 보기 :  가장 큰 수

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


문제

  • 정답률 : 54%


작성 코드

def solution(numbers):
    if list(set(numbers)) == [0]:
        return "0"
    
    numbers = [str(i) for i in numbers]
    numbers.sort(key = lambda x:(x*4)[:4],reverse=True)
    answer = ''.join(numbers)
    return answer

풀이

리스트가 [2,7,46]라면, [7,46,2]로 정렬하여 "7462"를 리턴해야한다.

이걸 만드는 코드와 과정은 이렇다.
1. 리스트 내 모든 원소가 0이면 "0"으로 return한다.
2. numbers의 원소를 string으로 변경한 뒤, 천의 자리까지 따진다는 점을 고려해서 문자열을 4배해서 :4까지 자른다.
굳이 4배를 한 이유는 1부터 9까지 한자리수의 경우를 고려하기 위함이었다.
이를 적용하여 실행한 예시는 이렇다. 
ex) ["9", "12", "34", "1"] → ["9999", "1212", "3434", "1111"] → (정렬) → ["9999", "3434", "1212", "1111"] → (원본) → ["9","34","12","1"]
3. 정렬된 리스트는 join으로 answer를 생성하고 출력한다.

320x100
728x90

'코딩 테스트 > 프로그래머스' 카테고리의 다른 글

Lv2. 오픈채팅방  (0) 2024.09.24
Lv2. 2 x n 타일링  (0) 2024.09.22
Lv1. 체육복  (0) 2024.09.19
Lv3. 최고의 집합  (0) 2024.09.14
Lv1. 완주하지 못한 선수  (0) 2024.09.13
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.