JSITCLUB
파이썬 - 프로그래머스 - 정수 내림차순으로 배치하기 본문
프로그래머스 - level 1
문제 설명
함수 solution은 정수 n을 매개변수로 입력받습니다. n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요. 예를들어 n이 118372면 873211을 리턴하면 됩니다.
제한 조건
-
n은 1이상 8000000000 이하인 자연수입니다.
입출력 예
n | return |
118372 | 873211 |
코딩테스트 연습 - 정수 내림차순으로 배치하기
함수 solution은 정수 n을 매개변수로 입력받습니다. n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요. 예를들어 n이 118372면 873211을 리턴하면 됩니다. 제한 조건 n은 1이��
programmers.co.kr
풀이 및 코드 |
문제 요약
내림차순으로 배치하기
문제 해설
이 문제는 지난번 거꾸로 배치하는 것과 비슷한 문제이지만, 우선 정렬이 필요한 문제입니다.
정렬에는 여러 가지 방법이 있는데, 그 여러 방법을 어떻게 구현하는가는 알고리즘 쪽에서 다루기로 하고, 여기에서는 파이썬의 함수를 사용하는 방법을 다루겠습니다.
파이썬에서 정렬하는 방법은 대표적으로 함수인 sorted()를 사용하는 방법과 리스트의 메서드인 sort()를 사용하는 방법입니다.
(참고로 함수와 메서드는 둘 다 같은 함수입니다. 다만 특정 자료형(오브젝트)에 국한되어있을 때 "메서드"라 부르고 모습은 "자료형. 메서드명()" 형태로 사용합니다.)
둘을 비교한 것을 표로 만들어 봤습니다.
sorted() | list.sort() | |
사용처 | 파이썬의 함수로 나열형(str,list,tuple,range)과 set,dict 까지도 사용 가능 | 리스트의 메서드로 리스트에서만 사용 |
결과값 | 있다.(리스트) 결과를 출력하거나 변수에 담을 수 있다. |
없다. 결과값이 따로 있지 않고 리스트자체가 바뀌어 있다. |
역정렬 | reverse 인자를 사용 sorted(리스트 , reverse=True) |
reverse 인자를 사용 리스트.sort(reverse=True) 참고로 a.reverse() 메서드는 정렬과 상관없이 단순히 역순으로 바꿔주는 함수 |
예 | a=[4,3,5,2,1] b=sorted(a) c=sorted(a,reverse=True) print(a) #결과 : [4,3,5,2,1] print(b) #결과 : [1,2,3,4,5] print(c) #결과 : [5,4,3,2,1] |
a=[4,3,5,2,1] b=a.sort() a.sort(reverse=True) print(a) #결과:[1,2,3,4,5] print(b) #결과 : None print(a) #결과 : [5,4,3,2,1] |
그럼 문제를 풀겠습니다.
이 문제는 내림차순 즉 큰 수에서 작은 수 순서로 배치하는 문제로 함수를 사용하면 간단히 풀리 겠죠.
단, 위에서 이야기했듯이 정렬은 나열 형만 가능하므로 주어진 정수를 문자열로 형 변환 후 사용해야 합니다.
n=118372
s=str(n)
print(sorted(s,reverse=True))
결과 값 : ['8', '7', '3', '2', '1', '1']
결과를 보면 숫자가 역순으로 정렬은 되었지만, 문자를 담고 있는 리스트 형태로 이것을 다시 정수로 바꿔주어야 합니다.
정수로 바꿔주는 방법은 흔히 사용하는 반복문을 사용하여 변수에 문자열을 하나하나 붙여 담고, 문자열을 다시 정수로 바꾸는 방법이 있습니다. 하지만 문자열의 메서드 인 join() 함수를 사용하면 간단하게 바꿀 수 있습니다.
print(''.join(['8', '7', '3', '2', '1', '1']))
join() 함수의 결과는 str이므로 정수로 형 변환을 하면 최종 결과를 얻을 수 있습니다.
결과코드
def solution(n):
s=str(n)
answer =sorted(s,reverse=True)
answer = int(''.join(answer))
return answer
또는 한 줄로 표현도 가능합니다.
def solution(n):
return int(''.join(sorted(str(n),reverse=True)))
'파이썬 > 문제풀이' 카테고리의 다른 글
파이썬 - 프로그래머스 - 정수 제곱근 판별 (0) | 2020.07.29 |
---|---|
파이썬 - 프로그래머스 - 문자열 내림차순으로 배치하기 (2) | 2020.07.28 |
파이썬 - 프로그래머스 - 자연수 뒤집어 배열로 만들기 (0) | 2020.07.23 |
파이썬 - 프로그래머스 - 약수의 합 (0) | 2020.07.23 |
파이썬 - 프로그래머스 - 자릿수 더하기 (0) | 2020.07.22 |