DecordRay

[프로그래머스] Level2 : 가장 큰 수[Python] 본문

알고리즘/프로그래머스

[프로그래머스] Level2 : 가장 큰 수[Python]

DecordRay 2023. 1. 31. 19:47
728x90
반응형

문제 : https://school.programmers.co.kr/learn/courses/30/lessons/42746

 

프로그래머스

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

programmers.co.kr

풀이 :

1. numbers에 있는 원소들을 str 형태로 변환해서 str_arr 리스트에 저장

2. 문자열 원소를 3번 반복해서 이어붙인 후 사전 순으로 내림차순 정렬

why? - [34, 30, 3]을 정렬할 경우 [343434, 333, 303030]이 되므로 [34, 3, 30] 순으로 원하는 결과가 나오기 때문

(int형 크기 비교가 아닌 문자열 사전순 배열이기 때문)

3. 정렬된 문자열 원소 이어붙이기

4. answer[0] = '0'일 경우 answer = '0'으로 치환

why? - 입력으로 [0,0,0]이 들어올경우 answer = '000'이 되므로

 

 

코드 :

def solution(numbers):
    
    str_arr = [str(i) for i in numbers] # numbers에 있는 원소들을 str형태로 변환해서 str_arr리스트에 저장
    str_arr.sort(key=lambda x: (x*3),reverse=True) # 문자열 원소를 3번 이어붙인 후 사전 순으로 내림차순 정렬
    answer = ''.join(str_arr)   # 정렬된 원소들 이어붙이기
    if answer[0] == '0':    # 입력으로 [0,0,0] 이 들어올경우 answer = '000'이 되므로 
        answer = '0'

    return answer
728x90
반응형
Comments