Python

[백준] 1427번 : 소트인사이드

Leunco 2021. 12. 27. 02:03

 

문제 유형 : 정렬, 배열

 

[예시]

2143

[출력]

4321

1. 내 풀이

N = input()
M = int(N)
_list = []
for _ in range(len(N)):
    _list.append(M%10)
    M = M//10

_list = sorted(_list,reverse=True)
for i in range(len(_list)):
    print(_list[i],end='')

- N에 수를 입력받고, 자리수를 세야해서 바로 int로 바꾸지 않았다.

- 변수 M을 int형으로 바꾼 N으로 두었다.

- 숫자의 각 자리수에 해당하는 수를 _list 원소에 하나씩 넣었다.

- 그 뒤 sorted()로 내림차순 정렬하였다.

 

2. 다른 풀이

** 핵심 아이디어
1. 자릿수를 기준으로 정렬 → 9부터 0까지 차례대로 확인
2. 각 숫자에 대해 해당 숫자의 개수를 계산하여 출력

 

0 1 2 3 4 5 6 7 8 9
0 0 0 0 0 0 0 0 0 0

 

ex. 988297

1) 출력 : 99

0 1 2 3 4 5 6 7 8 9
0 0 0 0 0 0 0 0 0 2

2) 출력 : 9988

0 1 2 3 4 5 6 7 8 9
0 0 0 0 0 0 0 0 2 2

3) 출력 : 99887

0 1 2 3 4 5 6 7 8 9
0 0 0 0 0 0 0 1 2 2

4) 출력 : 998872

0 1 2 3 4 5 6 7 8 9
0 0 1 0 0 0 0 1 2 2

 

array = input()

for i in range(9, -1, -1):
    for j in array:
    	if int(j) == i:
        	print(i, end='')

 

 

출처 : 패스트캠퍼스 - 알고리즘 / 기술면접 완전 정복 올인원 패키지 Online

문제 출처 : https://www.acmicpc.net/problem/1427

 

1427번: 소트인사이드

첫째 줄에 정렬하려고 하는 수 N이 주어진다. N은 1,000,000,000보다 작거나 같은 자연수이다.

www.acmicpc.net

반응형