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

[프로그래머스] [Level 1] 정수 내림차순으로 배치하기

박소민 2022. 2. 16. 17:50
문제) 정수 내림차순으로 배치하기
 

코딩테스트 연습 - 정수 내림차순으로 배치하기

함수 solution은 정수 n을 매개변수로 입력받습니다. n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요. 예를들어 n이 118372면 873211을 리턴하면 됩니다. 제한 조건 n은 1이

programmers.co.kr

 

  • 내 풀이

- 첫 풀이

- max 함수로 큰 값부터 불러온 후 큰 값 삭제

- 문자열 삭제/ 치환 함수: .replace("삭제하려는 문자열","치환할 문자열",치환 횟수)

   → 반환 되는 값 다른 변수에 넣어야 함

def solution(n):
    n=str(n)
    answer=''
    for i in range(len(n)):
        m=max(n)
        answer+=m
        #문자열 삭제/치환 함수: .replace("삭제하려는 문자열","치환할 문자열",치환 횟수)
        n=n.replace(m,"",1)
    return int(answer)

- 두 번째 풀이

- 리스트에 담은 후 sort() 함수 수행

def solution(n):
    ls=list(str(n))
    ls.sort(reverse=True)
    answer=''
    for i in range(len(ls)):
        answer+=str(ls[i])
    return int(answer)

 

 

  • 다른 사람 풀이

- "".join(ls)리스트 값 문자열로 바로 합치기 가능

def solution(n):
    ls=list(str(n))
    ls.sort(reverse=True)
    answer="".join(ls)
    return int(answer)

 

  • 결과

- 첫 번째 풀이로 런타임 에러나서 계속 수정하느라 한시간 넘게 날렸는데

문제가 좀 바뀌면서 문제오류가 생긴 건지 이전에 통과됐던 풀이들로도 런타임 에러 나는 것 확인^^....

n값을 int변환 후 다시 str변환해야 전부 통과가 가능하다

ls=list(str(n)) → ls=list(str(int(n)))