Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 편스토랑
- 편스토랑 우승상품
- dacon
- Baekjoon
- 코로나19
- gs25
- 데이콘
- 파이썬
- Kaggle
- 맥북
- leetcode
- 우분투
- github
- PYTHON
- AI 경진대회
- 금융문자분석경진대회
- 더현대서울 맛집
- 프로그래머스 파이썬
- ubuntu
- 백준
- ChatGPT
- 자연어처리
- SW Expert Academy
- 캐치카페
- 프로그래머스
- Real or Not? NLP with Disaster Tweets
- programmers
- hackerrank
- Docker
- Git
Archives
- Today
- Total
솜씨좋은장씨
[BaeKJoon] 10825번: 국영수 (Python) 본문
728x90
반응형
1일 1문제! 7일차!
오늘의 문제는 백준에있는 국영수 문제입니다.
이 문제는 이름과 국어, 영어, 수학 점수를 입력받게 되면
- 국어 점수가 감소하는 순서로
- 국어 점수가 같으면 영어 점수가 증가하는 순서로
- 국어 점수와 영어 점수가 같으면 수학 점수가 감소하는 순서로
- 모든 점수가 같으면 이름이 사전 순으로 증가하는 순서로 (단, 아스키 코드에서 대문자는 소문자보다 작으므로 사전순으로 앞에 온다.)
정렬을 하고 이름을 출력하는 문제입니다.
이렇게 여러개의 조건이 있는 정렬은 sorted와 lambda만 있으면 해결할 수 있습니다.
이를 한번 살펴보면 만약
example_list = [(0, 3), (1, 2), (2, 7), (3, 5), (4, 1)]
이런 변수들을 가지고 있는 리스트가 하나 있다고 했을 때
각 아이템들의 두번째 숫자를 기준으로 오름차순 정렬을 하고 싶다 하면
example_sorted_list = sorted(example_list, key=lambda x : x[1])
위와 같이 sorted 함수 내에 key= lambda ~~ 를 통해서 비교할 대상을 정해주면 됩니다.
그렇게 되면
[(4, 1), (1, 2), (0, 3), (3, 5), (2, 7)]
위와 같이 결과를 얻을 수 있습니다.
여기서! 만약 두번째 숫자 기준으로 내림차순 정렬을 하고 싶다한다면 간단합니다.
example_sorted_list = sorted(example_list, key=lambda x : -x[1])
조금 전 비교함수를 썼던 부분에서 비교 대상에 -를 붙여주면 내림차순으로 정렬됩니다.
그 결과는
[(2, 7), (3, 5), (0, 3), (1, 2), (4, 1)]
위와 같이 내림차 순으로 정렬된 결과를 얻을 수 있습니다.
자 그럼 이제 이 개념을 가지고 문제를 풀어보겠습니다.
N = int(input())
score_list = []
for i in range(N):
[name, kor, eng, math] = map(str, input().split())
score_list.append([name, int(kor), int(eng), int(math)])
sorted_score_list = sorted(score_list, key=lambda x : (-x[1], x[2], -x[3], x[0]))
for score in sorted_score_list:
print(score[0])
결과는!
파이썬이 numpy같은라이브러리를 사용하지 않으면 속도는 느리지만 코드를 짧게 짤 수 있어서 좋은 것 같습니다.
'Programming > 코딩 1일 1문제' 카테고리의 다른 글
[BaeKJoon] 11652번: 카드 (Python) (0) | 2020.02.15 |
---|---|
[BaeKJoon] 10989번: 수정렬하기 3 (Python) (6) | 2020.02.14 |
[BaeKJoon] 10814번: 나이순 정렬 (Python) (0) | 2020.02.12 |
[BaeKJoon] 11651번: 좌표 정렬하기 2 (Python) (0) | 2020.02.11 |
[BaeKJoon] 11650번: 좌표 정렬하기 (Python) (2) | 2020.02.11 |
Comments