문제 링크 (Level 1)
https://school.programmers.co.kr/learn/courses/30/lessons/12933?language=python3
나의 코드 (Python)
def solution(n):
answer = 0
cnt = 1 # 몇의 자리인지를 나타낼 변수
tmp = []
for s in str(n): # str로 형변환하면 한글자씩 분리가 가능함
tmp.append(s)
tmp.sort() # 정렬
for i in tmp:
answer += int(i) * cnt # 정렬 마친 수를 재조립 (오름차순이기 때문에, 이 방식으로 내림차순으로 조립가능)
cnt *= 10
return answer
1. 수를 분해한다 (str로 형 변환하면 분해 가능)
2. 정렬한다 (오름차순으로 정렬함)
3. 재조립한다.
--> 배열에 앞부분부터 꺼내서 재조립합니다. 따라서 오름차순으로 조립이 가능합니다. 이때 자릿수를 나타낼 cnt변수에 10을 곱해주면서 더해주면 내림차순의 답을 구할 수 있습니다.
'코딩공부 > 프로그래머스 (python)' 카테고리의 다른 글
[프로그래머스] 콜라츠 추측 (Python) (0) | 2022.08.14 |
---|---|
[프로그래머스] x만큼 간격이 있는 n개의 숫자 (Python) (0) | 2022.08.11 |
[프로그래머스] 최대공약수와 최소공배수 (Python) (2) | 2022.08.09 |
[프로그래머스] 정수 제곱근 판별 (Python) (0) | 2022.08.08 |
[프로그래머스] 행렬의 덧셈 (Python) (0) | 2022.08.06 |
댓글