[프로그래머스] 가장 큰 수 (Python) - 정렬

Yebin Lee·2022년 7월 5일
0

코테준비

목록 보기
5/12

며칠 전 주말에 쉬엄쉬엄 풀려다가 계속 막혀서 잠시 보류해뒀었던 문제...❗
알고 보니 세 줄이면 끝나는 문제였다. 아이디어가 중요한 그런 문제


프로그래머스 [가장 큰 수] 문제 보기


문제를 제대로 읽지 않는 나의 잘못된 버릇.. 때문에 처음 시도 때는 오류가 났었다.

뭐지?! 싶어 문제를 다시 읽어봤더니

글쎄, 나는 각 숫자를 나눠 큰 순서대로 정렬하면 될 줄 알았더니 그게 아니었다...!
다 푼 줄 알고 좋았었는데 맥이 빠진다 ㅠㅠ

잘못된 풀이는 다음과 같다.

def solution(numbers):
    answer = ''
    array = []
    for i in range(0, len(numbers)):
        for j in map(int, str(numbers[i])):
            array.append(j)
        array.sort(reverse=True)
    answer = ''.join(map(str,array))
    return answer

보통 아이디어는 잘 생각하고 코딩으로 옮기는 걸 더 어려워하는 편인데 이번 문제는 새로웠다. 게다가 무지한 파이썬에 관해 여러 문법을 맛볼 수 있었던 좋은 기회를 제공해준 문제다. lambda의 사용법을 잘 알아두면 꽤나 쓰일 것 같단 말이지... 또, 앞에서부터 차례대로 수를 비교해주는 sort도 이 문제에서 한 몫 했다!


프로그래머스 [가장 큰 수] 문제 풀이


def solution(numbers):
    numbers = list(map(str, numbers))
    numbers.sort(key=lambda x: x * 3, reverse=True)
    return str(int(''.join(numbers)))

우선 numbers 를 map을 사용하여 string으로 바꾸어주었다가 나중에 return 시에 int로 합쳐 다시 string으로 변환해주어야 한다는 점이 가장 까다로웠다. "0" 이 여러개 있을 때 000으로 오는 것을 처리하기 위해 이 과정을 거치게 된다.

파이썬 내장 함수에 관한 공부를 해야겠다는 생각을 했다. 물론 문제를 풀 때마다 필요한 내용을 찾아보는 것도 좋지만 한번쯤 개념 서적을 쭉 읽어봐도 좋을 것 같다.


안녕 !

0개의 댓글