링크 - https://www.acmicpc.net/problem/10825
import sys
input = sys.stdin.readline
#모든 값에 대해 정렬하기 쉽게 리스트를 생성함
students =[]
n = int(input())
for _ in range(n):
line = list(input().split())
for i in range(1,4):
line[i]=int(line[i])
students.append(line)
#이름을 사전순으로 정렬(오름차순)
students.sort()
#수학점수 내림차순으로 정렬
students.sort(key = lambda x:x[3],reverse=True)
#영어점수 오름차순으로 정렬
students.sort(key = lambda x:x[2])
#국어점수 내림차순으로 정렬
students.sort(key = lambda x:x[1],reverse=True)
for i in range(n):
print(students[i][0])
모든 원소에 대해 정렬을 해주어야 하기 때문에 리스트를 사용했고,
점수는 int형으로 바꿔준 후 정렬을 했다.
정렬 조건의 역순으로 하면 문제 조건을 만족시킬 수 있었다.
그런데...
#출처 - 이것이 코딩테스트다 with python
n = int(input())
students = [] # 학생 정보를 담을 리스트
# 모든 학생 정보를 입력 받기
for _ in range(n):
students.append(input().split())
'''
[ 정렬 기준 ]
1) 두 번째 원소를 기준으로 내림차순 정렬
2) 두 번째 원소가 같은 경우, 세 번째 원소를 기준으로 오름차순 정렬
3) 세 번째 원소가 같은 경우, 네 번째 원소를 기준으로 내림차순 정렬
4) 네 번째 원소가 같은 경우, 첫 번째 원소를 기준으로 오름차순 정렬
'''
students.sort(key=lambda x: (-int(x[1]), int(x[2]), -int(x[3]), x[0]))
# 정렬된 학생 정보에서 이름만 출력
for student in students:
print(student[0])
답지 코드에는 sort()를 한 번만 호출해서 모두 정렬을 해주었다..
우하하~~~ 저렇게 해도 되는 거군아...한 수 배워갑니도...
링크 - https://www.acmicpc.net/problem/18310
import sys
input = sys.stdin.readline
n = int(input())
house = list(map(int,input().split()))
mid = n//2
house.sort()
print(house[(n-1)//2 ])
중간값을 구하면 된다는 아이디어와 코드는 단순하지만
n이 짝수일 때와 n이 홀수일 때를 각각 생각해주어야 한다는 점이 조금 까다로웠다.