본문 바로가기
Python

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

by Leunco 2021. 12. 27.

 

문제 유형 : 정렬, 배열

 

[예시]

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

반응형

'Python' 카테고리의 다른 글

[백준] 11650번 : 좌표 정렬하기  (0) 2021.12.31
[백준] 10814번 : 나이순 정렬  (0) 2021.12.31
[백준] 2750번 : 수 정렬하기  (0) 2021.12.27
[백준] 4195번 : 친구 네트워크  (0) 2021.12.19
[알고리즘] 그래프  (0) 2021.12.15

댓글