이것이 코딩테스트다 178페이지문제이다.
단순한 정렬 문제이다.
sort함수를 쓰면 쉽게 구현 할 수 있다.
다만 sort함수는 기본적으로 오름차순이다. 설정을 바꾸어 주는 것이 이문제의 문제였다.
아래는 나의 코드
import sys
N = int(sys.stdin.readline())
numbers=[]
for i in range(N):
numbers.append(int(sys.stdin.readline()))
numbers.sort(reverse=True)
print(numbers)
아래는 sort함수의 사용법이다.
리스트.sort()로 사용한다.
숫자는 음수,0,양수 순으로 정렬을 해주고
문자는 대문자가 앞으로 소문자가 뒤로간다.
sorted()
sorted( <list> , key = <function> , reverse = <bool>)
# <list> 뿐 아니라, <Tuple>, <Dictionary>, <Str>에도 사용 가능하다.
- 원본 내용을 바꾸지 않고, 정렬한 값을 반환한다.
- List, tuple, Dictionary, str에 모두 사용 가능하다.
- key 를 통하여 정렬할 기준을 정할 수 있다.
- reverse 가 True이면 내림차순, False이면 오름차순으로 정렬된다.
arr = [10, 40, 20, 15]
arr = sorted(arr, reverse = True)
print(arr)
>>>> [40, 20, 15, 10]
sort()
<list>.sort(key = <function>, reverse = <bool>)
- 원본 자체를 수정한다.
- 반환값은 None
- Tuple , Dictionary, Str 에는 사용이 불가하다.
reverse 옵션을 이용하여 오름차순과 내림차순을 설정할 수 있다.
기본적으로 오름차순이며 reverse=True로 설정하면 내림차순이 된다.
arr = [10, 40, 20, 15]
arr = sorted(arr, reverse = True)
print(arr)
>>>> [40, 20, 15, 10]
key값을 사용하면 여러가지 기준으로 정렬을 실행할 수 있다.
2중 리스트에서 정렬하기
array = [[50, "apple"], [30, "banana"] , [400, "melon"]]
위와 같이 [Int, Str]형식의 요소를 가진 리스트가 존재할때
Int 를 기준으로 정렬하기
.sort() 함수 사용
array.sort(key = lambda x:x[0])
print(array)
>>>>> [[30, 'banana'], [50, 'apple'], [400, 'melon']]
sorted() 함수 사용
print(sorted(array, key = lambda x: x[0]))
>>>>> [[30, 'banana'], [50, 'apple'], [400, 'melon']]
Str을 기준으로 정렬하기
Sort() 함수 사용
array.sort(key = lambda x:x[1])
print(array)
>>>>>[[50, 'apple'], [30, 'banana'], [400, 'melon']]
sorted() 함수 사용
print(sorted(array, key = lambda x: x[1]))
>>>>>[[50, 'apple'], [30, 'banana'], [400, 'melon']]
# key가 여러개 일때 (다중조건 정렬)
array = [("A", 18, 300000) , ("F", 24, 10000), ("T", 24, 200000),("Q",24,5000000), ("B", 70, 5000)]
# (<이름> , <나이> , <재산>) 이라고 하면
- 위의 리스트처럼 정렬해야 할때 고려해야 많은 경우가 있을때는 튜플형식으로 key = lambda x: (x[0] , x[2]) lambda식을 세워주면 된다.
- 그리고 내림차순으로 하고 싶다면 마이너스 부호를 붙여주면 된다. key= lambda x: (-x[0], x[2])
나이를 기준으로 오름차순 정렬하고 , 같은 나이라면 재산을 내림차순으로 정렬
array.sort(key = lambda (x: x[1], -x[2]))
print(array)
>>> [('A', 18, 300000), ('Q', 24, 5000000), ('T', 24, 200000), ('F', 24, 10000), ('B', 70, 5000)]
'Problem Solving > 정렬' 카테고리의 다른 글
광물 캐기 (1) | 2023.10.16 |
---|---|
BOJ1946 신입 사원 (0) | 2023.04.06 |
BOJ1931 회의실 배정(R) (0) | 2023.03.20 |
두 배열의 원소 교체 (0) | 2023.01.04 |
성적이 낮은 순서로 학생 출력하기 (0) | 2023.01.04 |
이것이 코딩테스트다 178페이지문제이다.
단순한 정렬 문제이다.
sort함수를 쓰면 쉽게 구현 할 수 있다.
다만 sort함수는 기본적으로 오름차순이다. 설정을 바꾸어 주는 것이 이문제의 문제였다.
아래는 나의 코드
import sys
N = int(sys.stdin.readline())
numbers=[]
for i in range(N):
numbers.append(int(sys.stdin.readline()))
numbers.sort(reverse=True)
print(numbers)
아래는 sort함수의 사용법이다.
리스트.sort()로 사용한다.
숫자는 음수,0,양수 순으로 정렬을 해주고
문자는 대문자가 앞으로 소문자가 뒤로간다.
sorted()
sorted( <list> , key = <function> , reverse = <bool>)
# <list> 뿐 아니라, <Tuple>, <Dictionary>, <Str>에도 사용 가능하다.
- 원본 내용을 바꾸지 않고, 정렬한 값을 반환한다.
- List, tuple, Dictionary, str에 모두 사용 가능하다.
- key 를 통하여 정렬할 기준을 정할 수 있다.
- reverse 가 True이면 내림차순, False이면 오름차순으로 정렬된다.
arr = [10, 40, 20, 15]
arr = sorted(arr, reverse = True)
print(arr)
>>>> [40, 20, 15, 10]
sort()
<list>.sort(key = <function>, reverse = <bool>)
- 원본 자체를 수정한다.
- 반환값은 None
- Tuple , Dictionary, Str 에는 사용이 불가하다.
reverse 옵션을 이용하여 오름차순과 내림차순을 설정할 수 있다.
기본적으로 오름차순이며 reverse=True로 설정하면 내림차순이 된다.
arr = [10, 40, 20, 15]
arr = sorted(arr, reverse = True)
print(arr)
>>>> [40, 20, 15, 10]
key값을 사용하면 여러가지 기준으로 정렬을 실행할 수 있다.
2중 리스트에서 정렬하기
array = [[50, "apple"], [30, "banana"] , [400, "melon"]]
위와 같이 [Int, Str]형식의 요소를 가진 리스트가 존재할때
Int 를 기준으로 정렬하기
.sort() 함수 사용
array.sort(key = lambda x:x[0])
print(array)
>>>>> [[30, 'banana'], [50, 'apple'], [400, 'melon']]
sorted() 함수 사용
print(sorted(array, key = lambda x: x[0]))
>>>>> [[30, 'banana'], [50, 'apple'], [400, 'melon']]
Str을 기준으로 정렬하기
Sort() 함수 사용
array.sort(key = lambda x:x[1])
print(array)
>>>>>[[50, 'apple'], [30, 'banana'], [400, 'melon']]
sorted() 함수 사용
print(sorted(array, key = lambda x: x[1]))
>>>>>[[50, 'apple'], [30, 'banana'], [400, 'melon']]
# key가 여러개 일때 (다중조건 정렬)
array = [("A", 18, 300000) , ("F", 24, 10000), ("T", 24, 200000),("Q",24,5000000), ("B", 70, 5000)]
# (<이름> , <나이> , <재산>) 이라고 하면
- 위의 리스트처럼 정렬해야 할때 고려해야 많은 경우가 있을때는 튜플형식으로 key = lambda x: (x[0] , x[2]) lambda식을 세워주면 된다.
- 그리고 내림차순으로 하고 싶다면 마이너스 부호를 붙여주면 된다. key= lambda x: (-x[0], x[2])
나이를 기준으로 오름차순 정렬하고 , 같은 나이라면 재산을 내림차순으로 정렬
array.sort(key = lambda (x: x[1], -x[2]))
print(array)
>>> [('A', 18, 300000), ('Q', 24, 5000000), ('T', 24, 200000), ('F', 24, 10000), ('B', 70, 5000)]
'Problem Solving > 정렬' 카테고리의 다른 글
광물 캐기 (1) | 2023.10.16 |
---|---|
BOJ1946 신입 사원 (0) | 2023.04.06 |
BOJ1931 회의실 배정(R) (0) | 2023.03.20 |
두 배열의 원소 교체 (0) | 2023.01.04 |
성적이 낮은 순서로 학생 출력하기 (0) | 2023.01.04 |