728x90
Q 23. 국영수
'''
Chapter 14. 국영수
접근법 1
국어 내림차순, 영어 오름차순, 수학 내림차순, 이름 오름차순으로 정렬
'''
import sys
input = sys.stdin.readline
# 도현이네 반의 학생 수
N = int(input())
# 학생 성적
student = [input().split() for _ in range(N)]
# 국어 내림차순, 영어 오름차순, 수학 내림차순, 이름 오름차순
student.sort(key=lambda x:(-int(x[1]),int(x[2]),-int(x[3]),x[0]))
for s in student:
print(s[0])
Q 24. 안테나
'''
Chapter 14. 안테나
접근법 1
중간에 있는 집에 설치할 때 거리의 총 합이 최소다.
중간 집에서 멀어질 수록 거리의 총 합이 커진다.
'''
import sys
input = sys.stdin.readline
# 집의 수
N = int(input())
home = sorted(map(int,input().split()))
print(home[(N-1)//2])
Q 25. 실패율
'''
Chapter 14. 실패율
접근법 1
각 스테이지의 사람 수를 구한다.
스테이지 마다 실패율을 구한다.
내림차순으로 정렬한다.
'''
def solution(N, stages):
# 총 사용자 수
user_cnt = len(stages)
# 각 스테이지 사람 수
cnt = [0]*(N+2)
for i in stages:
cnt[i] += 1
# 실패율
f = []
for i in range(1,N+1):
# 스테이지에 도달한 플레이어가 없다면 실패율 0
if user_cnt == 0:
f.append([i,0])
else:
# [스테이지 번호, 실패율]
f.append([i,cnt[i]/user_cnt])
# 스테이지 클리어 못한 사람 제외
user_cnt -= cnt[i]
# 정렬
f.sort(key=lambda x:x[1],reverse=True)
answer = [idx for idx,v in f]
return answer
Q 26. 카드 정렬하기
'''
Chapter 14. 카드 정렬하기
접근법 1
최소 횟수로 비교하기 위해서 적은 수의 카드끼리 계산
정렬 + 카드 2장 뽑기 + 2장 합해서 다시 넣기 반복 -> heapq
'''
import heapq
import sys
input = sys.stdin.readline
# N개의 숫자 카드 묶음
N = int(input())
card = [int(input()) for _ in range(N)]
heapq.heapify(card)
# 정답
answer = 0
for _ in range(N-1):
# 제일 작은 카드
first_card = heapq.heappop(card)
# 두번째 작은 카드
second_card = heapq.heappop(card)
# 카드 정렬
answer += first_card+second_card
heapq.heappush(card,first_card+second_card)
print(answer)
728x90
반응형
'TIL - 프로그래밍 > Python 알고리즘' 카테고리의 다른 글
[프로그래머스] 기둥과 보 설치 - Python (0) | 2023.04.09 |
---|---|
이것이 취업을 위한 코딩 테스트다 CHAPTER 16 다이나믹 프로그래밍 문제 (0) | 2023.04.09 |
이것이 취업을 위한 코딩 테스트다 CHAPTER 13 DFS/BFS 문제 (1) | 2023.04.09 |
[프로그래머스] 블록 이동하기 - Python (1) | 2023.04.09 |
이것이 취업을 위한 코딩 테스트다 CHAPTER 8 다이나믹 프로그래밍 (0) | 2023.04.09 |
댓글