문제 유형 : 정렬, 배열
[예시]
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
반응형
'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 |
댓글