https://www.acmicpc.net/problem/1427
1427번: 소트인사이드
첫째 줄에 정렬하려고 하는 수 N이 주어진다. N은 1,000,000,000보다 작거나 같은 자연수이다.
www.acmicpc.net
문제
배열을 정렬하는 것은 쉽다. 수가 주어지면, 그 수의 각 자리수를 내림차순으로 정렬해보자.
입력
첫째 줄에 정렬하려고 하는 수 N이 주어진다. N은 1,000,000,000보다 작거나 같은 자연수이다.
출력
첫째 줄에 자리수를 내림차순으로 정렬한 수를 출력한다.
코드 정답
import sys
input = sys.stdin.readline
num = int(input())
if(not(num < 1000000001)):
exit()
li = list(map(int, str(num)))
li.sort(reverse=True) # reverse 옵션이 존재하는데 False(오름차순)가 디폴드, True는 내림차순
for i in li:
print(i, end = '')
풀이
1~2행 : 이제는 안쓰면 불안한 헤더이다. sys 를 사용할 수 있게끔 import 시켜주고 input 에 sys.stdin.readline 을 대입시켜 input을 사용하는 형식으로 sys.stdin.readline 을 사용하게끔 해주었다.
import sys
input = sys.stdin.readline
4~7행 : 변수 num 에 값을 입력을 받는다. 조건 중 입력받은 값이 1,000,000,000 초과라면 안된다고 하였기에 조건문을 걸어주었으며 입력받은 값을 문자열 형식으로 바꿔주고 각 자리수마다 다시 int 형식으로 바꿔주면서 리스트 형식으로 바꿔주어 대입해준다.
num = int(input())
if(not(num < 1000000001)):
exit()
li = list(map(int, str(num)))
9~11행 : sort에는 옵션이 존재하는데 그 중 하나를 사용해주었다. 기본적으로 li.sort() 만 사용하게 된다면 이는 li.sort(reverse=False) 값을 가진 것과 같으며 이것은 오름차순이다. 그렇기에 False를 True로 바꿔주게 된다면 내림차순 정렬이 된다. 이제 li 에 저장된 정수값을 하나하나 따라가며 그 값을 출력을 해주며 print() 에 end = '' 가 존재하는데 이는 print(i)만 하게 된다면 하나 출력하고 줄바꿈이 이러나기에 사용해준 옵션이다. 저렇게 사용하게 된다면 한줄로 나오게 되고 만일 end = ' ' 로 입력해준다면 1234가 입력되었다는 가정 하에 1 2 3 4 이러한 형식으로 출력이 될 것이다.
li.sort(reverse=True) # reverse 옵션이 존재하는데 False(오름차순)가 디폴드, True는 내림차순
for i in li:
print(i, end = '')
'BaekJoon > 단계별로 풀어보기' 카테고리의 다른 글
[백준] 정렬 - 11651번 (Python) (0) | 2023.02.13 |
---|---|
[백준] 정렬 - 11650번 (Python) (0) | 2023.02.12 |
[백준] 정렬 - 2108번 (Python) (0) | 2023.02.09 |
[백준] 정렬 - 10989번 (Python) (0) | 2023.02.08 |
[백준] 정렬 - 2751번 (Python) (0) | 2023.02.07 |