일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 알고리즘 문제풀이
- 프로그래머스
- IOS
- 컨볼루션
- SWIFTUI
- DTFT
- 신호처리
- DSP
- dft
- leet code
- 코테
- 알고리즘문제풀이
- 코딩테스트
- 스위프트
- SWIFT
- 이산신호처리
- backjoon
- 코테준비
- Trie
- 카카오 코딩테스트
- Leet Coding Challenge
- 백준
- 전자공학
- PYTHON
- 파이썬
- 알고리즘
- 트라이
- 릿코드
- 독서노트
- leetcode
Archives
- Today
- Total
매일 매일 성장하는 섭섭군
[Seop's의 코드풀이] Back_Joon 10825 국영수 , Python 본문
반응형
이번 문제는 백준 10825 국영수 라는 문제입니다.
정렬 알고리즘에 분류된 문제로 여러개의 조건으로 정렬을 진해하는 것이 최종 목표입니다.
문제의 내용과 입출력은 다음과 같습니다.
문제를 보면 정렬을 해야 하는 조건이 4가지가 있는데요 간략하게 요약해보면
1. 국어점수 내림차순
2. 영어점수 오름차순
3. 수학점수 내림차순
4. 이름 오름차순
저는 이 문제를 python 의 lambda를 활용해서 정렬하였습니다.
학생정보가 들어갈 배열을 하나 생성한 다음에 입력들어온 순서대로 저장합니다.
2차원 배열의 형태로 만들어지게 되며 이를 위에 명시된 기준대로 정렬합니다.
python 내에서 lambda 로 정렬 조건을 추가할 때 내림차순으로 정렬하고자 할때에는 - 를 붙이면 됩니다.
그렇다면 위의 조건은 다음과 같이 명시 될 것 입니다.
sorted(student, key= lambda x: ( -int(x[1]), int(x[2]), -int(x[3]), x[0] ) )
이렇게 정렬을 했다면 출력을 하면 끝입니다.
전체 코드는 다음과 같습니다. 다음 포스팅에서 뵙도록 하겠습니다.
import sys
input = sys.stdin.readline
N = int(input())
student = []
for _ in range(N) :
buf = list(map(str, input().rstrip().split(" ")))
student.append(buf)
student = sorted(student, key= lambda x: ( -int(x[1]), int(x[2]), -int(x[3]), x[0] ) )
for i in student :
print(i[0])
반응형
'알고리즘 문제풀이 > 백준' 카테고리의 다른 글
[Seop's의 코드풀이] 백준 1788 피보나치 수의 확장 - python (0) | 2020.04.27 |
---|---|
[Seop's의 코드풀이] 백준 1431 시리얼 번호 - Python (0) | 2020.04.26 |
[Seop's의 코드풀이] Back_Joon 9012 괄호 (0) | 2020.04.20 |
[Seop's의 코드풀이] Back_Joon 10828 스택 python (0) | 2020.04.20 |
[Seop's의 코드풀이] Back_Joon_2798_블랙잭_by_Python (0) | 2019.10.25 |
Comments