본문 바로가기
*Algorithm/Programmers_Level1

[programmers] 프로그래머스 Level1 정수 내림차순으로 배치하기(파이썬 Python)

by codinguser 2020. 9. 1.

프로그래머스
(주)그렙

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

(파이썬 Python)

 

* 문제출처 : 프로그래머스 코딩 테스트 연습, 알고리즘 문제
* 소스 코드 및 정리한 내용의 저작권은 글쓴이에게 있습니다.

 

 

 

 

프로그래머스 Level1 정수 내림차순으로 배치하기


1) 문제

 

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

 

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

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

programmers.co.kr


2) 풀이 과정

 

1. 입력받은 n을 리스트로 변환 이 후 "내림차순"으로 정렬

 

2. 받은 리스트의 개수만큼 i에 저장하여 비어있는 answer=''에 각 i의 값에 대응하는 인덱스의 값을 저장

 

3. answer에 저장된 것을 int로 변환하여 리턴


3) 코드

 

1
2
3
4
5
6
7
8
9
10
def solution(n):
    answer = ''
    
    n = list(str(n))
    n.sort(reverse=True)
    
    for i in range(len(n)):
        answer += n[i]
        
    return int(answer)
cs

4) 정리 노트

 

(1)

 

1
2
3
4
5
= 118372
print(n)
 
# < 출 력 >
#118372
cs

 

(2)

: 리스트로 변환해서 풀어야겠다. 근데 오류가 뜨네?

1
2
3
4
5
6
7
8
9
10
11
= 118372
= list(n)
 
# < 오류 발생 >
# ---------------------------------------------------------------------------
# TypeError                                 Traceback (most recent call last)
# <ipython-input-4-8632dc97664b> in <module>
#       1 n = 118372
# ----> 2 n = list(n)
 
TypeError: 'int' object is not iterable
 
cs

 

(3)

: 위에서 타입 에러 니까 int 가 아니면 문자겠지?

1
2
3
4
5
6
= 118372
= list(str(n))
print(n)
 
# < 출 력 >
# ['1', '1', '8', '3', '7', '2']
cs

 

(4)

: 해당 i에 해당하는 값들을 출력

1
2
3
4
5
6
7
8
9
10
11
12
13
answer = ''
 
= 118372
= list(str(n))
n.sort(reverse=True)
 
for i in range(len(n)):
    answer += n[i]
    
print(answer)
 
# < 출 력 >
# 873211
cs

 

(5)

: 또 오류네?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
def solution(n):
    answer = ''
    
    n = list(str(n))
    n.sort(reverse=True)
    
    for i in range(len(n)):
        answer += n[i]
        
    return answer
 
# < 오류 발생 >
# Traceback (most recent call last):
#   File "/solution_test.py", line 17, in test
#     actual0 = solution(p0_0)
#   File "/solution.py", line 12, in solution
#     return int(answer)
# TypeError: int() argument must be a string, a bytes-like object or a number, not 'list'
cs

 

(6)

: 반환 answer를 int()로 정수 처리

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
def solution(n):
    answer = ''
    
    n = list(str(n))
    n.sort(reverse=True)
    
    for i in range(len(n)):
        answer += n[i]
        
    return int(answer)
 
solution(118372)
 
# < 출 력 >
# 873211
cs

 

댓글