Development

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

코딩테스트/Python

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

yo~og 2021. 9. 4. 15:30
반응형

내 코드

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

ㅎㅎ 진짜 어렵다.. 이건 인터넷봄.. 저번에 친구랑 같이 풀다가 못풀어서 인터넷 봤었는데.. 그때 어떻게 푸는지만 대충보고 안풀었다ㅠ 포스팅할려고 다시품 ㅎㅎ

 

이건 진짜 ㅠ 창의력보는 문제인거같음 ㅠ

 

문자열로 바꿔준뒤 정렬을 하여 푸는 문제이다. 바로 정렬을 하면 풀리지 않고 약간의 변형이 필요하다.

먼저 문자열로 바꿔준다.

이때 바로 정렬을 하면 풀리지 않는다. 첫번째 테스트는 통과하지만 두번째 테스트는 통과하지 않는다. 3,30,34를 변형하여 정렬해줘야한다. 문자열로 바꿔준 후 바로 정렬을 하면 34,30,3 이렇게 정렬이 된다. 이것을 34,3,30 이렇게 정렬을 해야 문제를 풀 수 있다. 푸는 방법은 각 원소를 세번 곱한다. 즉, 3이면 333이되고 30이면 303030이된다. 1,2,4가 아닌 3을 곱하는 이유는 numbers의 원소기 1000이하이기 때문이다. 

이렇게 정렬을 한 뒤 join으로 리스트를 합쳐주면 풀릴꺼 같지만 또 문제가 생긴다. 모든 원소가 0일때 오류가 난다. 이 오류를 처리하기 위해서 int로 바꿔준 후 다시 문자열로 바꾸어 return 한다.

 

인터넷봐서 다른사람 코드는 존재하지않는다!ㅎ

반응형
Comments