본문 바로가기

Algorithm/Programmers lv.1

[프로그래머스] 정수 내림차순으로 배치하기 (feat. join함수)

https://school.programmers.co.kr/learn/courses/30/lessons/12933

 

프로그래머스

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

programmers.co.kr

 

 

이 문제는 join함수를 사용하면 편리하다. join함수는 이전에 정리해놓은 글이 있으니 참고하자.

https://vegetableworld.tistory.com/123

 

[Python] join 함수

join 함수의 모양은 다음과 같다. ".join(리스트) '구분자'.join(리스트) 1. ".join(리스트) ['a', 'b', 'c'] 이런 리스트가 있다고 하자. 이를 "abc"의 문자열로 합쳐서 반환해주고 싶다면 ".join(리스트)를 이용

vegetableworld.tistory.com

 

 

처음에는 조인함수를 사용하여  다음과 같이 풀었다. 

def solution(n):
    L = list(map(int, str(n)))
    R = sorted(L, reverse=True)
    result = ''.join(R)

    return result

 

하지만 타입에러가 나버린다.. 이유는?

 

join함수는 문자열로 이루어진 리스트의 원소들을 합쳐주는 역할을 한다. 하지만, n은 int형태의 정수이므로 join문을 쓰기에는 적절하지 않았던 것이다. 따라서, join문을 다음과 같이 수정해주자.

 

def solution(n):
    L = list(map(int, str(n)))
    R = sorted(L, reverse=True)
    result = ''.join(str(i) for i in R)

    return result

 

하지만 이번에는 문법에는 문제가 없었으나, 테스트케이스를 통과하지 못했다. 

 

문제는 join문은 문자열의 형태로 반환한다는 것이었다. 따라서, 정수형으로 바꿔주면 해결된다.

 

def solution(n):
    L = list(map(int, str(n)))
    R = sorted(L, reverse=True)
    result = int(''.join(str(i) for i in R))

    return result