코딩테스트

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

도도o 2024. 10. 9. 20:34

문제

배열을 정렬하는 것은 쉽다. 수가 주어지면, 그 수의 각 자리수를 내림차순으로 정렬해보자.

입력

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

출력

첫째 줄에 자리수를 내림차순으로 정렬한 수를 출력한다.

 

 

 

 

제출한 답안

numbers = list(input())
numbers.sort(reverse=True)
print(''.join(numbers))

 

 

 

풀이

입력 받은 숫자 문자열을 하나씩 분리하여 리스트에 저장한다. 이후 리스트를 내림차순으로 정렬하고, 정렬된 리스트를 다시 문자열로 합쳐 출력한다.

 

 

 

다른 풀이

print(''.join(sorted(input(), reverse=True)))

 

 


1. 문자열을 리스트로 바꾸기

파이썬에서 문자열을 리스트로 변환하면, 각 문자가 리스트의 원소가 된다. 이렇게 하면 각 문자를 개별적으로 다룰 수 있다.

list('word')
>>> ['w','o','r','d']

 

 

2. 리스트 또는 문자열 정렬하기

파이썬에서 리스트를 정렬할 때 `sort()` 와 `sorted()` 두 가지 방법을 사용할 수 있다. 두 방법 모두 리스트를 정렬하지만 약간의 차이가 있다.

 

1) sort

`sort()`는 리스트 자체를 정렬한다. 즉, 원본 리스트가 변경된다.

sample_list = [3, 4, 2, 1, 5]

sample_list.sort()
sample_list
>>> [1, 2, 3, 4, 5]

# 내림차순 정렬하기
sample_list.sort(reverse=True)
sample_list
>>> [5, 4, 3, 2, 1]

 

 

Note.

- sort()는 리스트에만 사용할 수 있으며, 문자열에는 직접 사용할 수 없다. 문자열을 먼저 리스트로 변환해야만 사용할 수 있다.

# 문자열에서 sort()를 사용할 경우:
'34215'.sort()
>>> AttributeError: 'str' object has no attribute 'sort'

# 리스트에서 sort()를 사용할 경우:
sample_list = list('34215')
sample_list.sort()
sample_list
>>> ['1', '2', '3', '4', '5']

 

 

 

2) sorted

`sorted()`는 새로운 정렬된 리스트를 반환하며, 원본 리스트는 변경되지 않는다.

sample_list = [3, 4, 2, 1, 5]

sample_list = sorted(sample_list)
sample_list
>>> [1, 2, 3, 4, 5]

# 내림차순 정렬하기
sample_list = sorted(sample_list, reverse=True)
sample_list
>>> [5, 4, 3, 2, 1] 

 

 

Note.

- sorted()는 문자열이나 리스트 모두에서 사용할 수 있으며, 새로운 정렬된 리스트나 문자열을 반환한다. 예를 들어, '34215' 문자열에 sorted()를 사용하면, 각 문자를 개별적으로 비교하여 정렬된 리스트를 반환합니다.

sorted('34215')
>>> ['1', '2', '3', '4', '5']

# 내림차순 정렬하기
sorted('34215', reverse=True)
>>> ['5', '4', '3', '2', '1']

 

 

 

 

 

 

 

출처

- https://www.acmicpc.net/problem/1427