Study/Python

[99클럽 코테 스터디] 10일차 TIL - 회상

eunhyeon5322 2025. 1. 25. 02:12

문제 링크 

https://www.acmicpc.net/problem/32953

 

문제 설명

문제

노교수는 지금까지 서울사이버대학교 빅데이터·정보보호학과와 인공지능학과, 컴퓨터공학과 등에서 N개의 수업을 진행하였다. 수업을 들었던 학생들을 회상하던 어느 날, 노교수는 자신의 수업을 M개 이상 들은 학생이 몇 명인지 궁금해졌다.

수업과 학생의 수가 너무 많아 한눈에 들어오지 않았던 노교수는, 당신에게 분석을 의뢰했다. 각 수업을 들은 학생들의 학번이 주어질 때, 조건을 만족하는 학생의 수를 구하자.


입력

첫 번째 줄에 N, M이 차례대로 주어진다. (1≤N≤100;1≤M≤N)

두 번째 줄부터 2×N개의 줄에 걸쳐 각 수업에 대한 정보 N개가 순서대로 주어진다.

 i번 수업의 정보는 두 개의 줄로 이뤄진다. 첫 번째 줄에 과목의 수강생 수 Ki, 두 번째 줄에 i번 수업을 들은 학생들의 학번 Ki개가 공백 하나로 구분되어 주어진다. (1≤Ki≤240)

학번은 숫자 8개로 구성되며, 항상 1로 시작한다. 한 수업에 동일한 사람이 중복되어 있는 경우는 주어지지 않는다.


출력

첫 번째 줄에 M개 이상의 수업을 들은 학생의 수를 출력한다.


입출력 예 설명
입력 1

3 2
3
12500001 12500002 12500003
5
12500001 12500003 12500005 12500007 12500009
4
12500001 12500004 12500007 12500010


출력 1 

3

 

‍💻내가 짠 코드

N, M = map(int, input().split())
student_count = {}

for _ in range(N):
    input()
    for student_id in input().split():
        student_count[student_id] = student_count.get(student_id, 0) + 1

print(sum(1 for count in student_count.values() if count >= M))

✍ 접근 방법

  • 학생 학번을 키(key)로, 수업 참여 횟수를 값(value)으로 저장하는 딕셔너리를 사용
  • 학번이 이미 딕셔너리에 있다면 값을 증가시키고, 없으면 초기값을 설정 - student_count.get(student_id, 0)

 

  •