99클럽 코테 스터디 18일차 TIL + 백준 29723번 브실이의 입시전략(Python)

모래·2025년 4월 17일

99클럽 스터디

목록 보기
14/20
post-thumbnail

✔️오늘의 학습 키워드

  • 자료구조

  • 정렬

  • 해시를 사용한 집합과 맵

  • 백준 29723번 브실이의 입시전략


✔️ 공부한 내용

📌 오늘의 문제


📌 작성 코드

import sys
input = sys.stdin.readline
n, m, k = map(int, input().split()) # 과목 개수, 요구과목 개수, 공개과목 개수
subject = dict() # 과목,점수 저장할 딕셔너리
for _ in range(n):
    s, p = input().strip().split() # 과목, 점수
    subject[s] = int(p) #딕셔너리에 점수 저장
score = 0 # 점수
for _ in range(k):
    t=input().rstrip() # 공개한 과목
    score+=subject[t] # 과목의 점수 더하기
    del subject[t] # 해당 과목 딕셔너리에서 삭제
subject = sorted(subject.items(), key=lambda x: x[1]) # 점수 순으로 정렬
max_score, min_score = score,score # 최대 점수, 최소 점수
for i in range(m-k):
    max_score += subject[i][1] # 최댓값 순 더해주기
    min_score += subject[-i-1][1] # 최솟값 순 더해주기
print(max_score, min_score) #최대점수 최소점수 출력

✔️ 오늘의 회고

📌 문제 및 시도 방법

과목과 점수가 둘 다 필요하므로 딕셔너리를 사용하였다.
최댓값과 최솟값이 필요하므로 정렬을 하기 위해 lambda를 사용하였다.

📌 문제 해결 방법

  1. 과목개수(n), 요구과목개수(m), 공개과목 개수(k) 입력
  2. 과목(s), 점수(p)를 입력받아 딕셔너리(subject)에 저장
  3. 공개한 과목 점수 더하고, 딕셔너리에서 삭제
  4. 과목 딕셔너리를 점수 순으로 정렬
  5. 요구과목개수-공개과목개수 만큼 반복하여 최댓값 순, 최솟값 순을 각각 max_score, min_score에 더한다.
  6. max_score, min_score 출력

📌 새롭게 안 내용

새롭게 안 개념은 없었다.

📌 내일 학습할 내용

내일의 알고리즘 문제를 풀어보고 이해하기


#99클럽 #코딩테스트준비 #개발자취업 #항해99 #TIL

profile
꾸준히 성장하는 웹 백엔드 개발자가 되자🔥

0개의 댓글