10일차 - 회상 ( 백준 - 32953번 )

2025. 1. 24. 17:03코테 스터디(Python)

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

예제 입력 2 

3 2
3
12599999 12599998 12599997
1
12599996
2
12599995 12599994

예제 출력 2 

0

풀이

1. 첫 줄에 진행한 수업의 개수 N과 M( 자신의 수업을 M개 이상 들은 학생이 궁금하기 때문에 )을 받아온다.

N, M = map(int, input().split())

2. 학번 별로 수업 횟수 값을 저장하기 위해 딕셔너리를 만든다.

student_count = {}

3. N번 반복하여 수업을 들은 학생의 숫자(K)를 받아오고 학번을 받아와서 리스트로 student_ids에 저장한다.

for _ in range(N):
	K = int(input())
	student_ids = list(map(int, input().split()))

4. student_ids를 돌아가며 student_count 안에 해당 학번이 있으면 학번 value값에 +1 을 해주고 없으면 value값을 1로 넣어준다.

for i in student_ids:
	if i in student_count:
		student_count[i] += 1
	else:
    	student_count[i] = 1

5.  수업을 M개 이상 들은 학생수를 넣을 변수를 작성해준다.

total_count = 0  ##처음에는 0명

6. student_count 딕셔너리에서 학생마다 수업을 들은 횟수 (value) 확인 해준다.

for count in student_count.values():

7. 조건문을 통해 M개 이상 들은 학생이 있으면 total_count에 +1 해준다.

if count >= M:
	total_count += 1

8. M개 이상 수업을 들은 학생 수 출력!

print(total_count)

 

제출코드

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

for _ in range(N):
    K = int(input())
    student_ids = list(map(int, input().split()))
    
    for i in student_ids:
        if i in student_count:
            student_count[i] += 1
        else:
            student_count[i] = 1

total_count = 0

for count in student_count.values():
    if count >= M:
        total_count += 1  

print(total_count)

 

 

중간에 엄청난 틀렸습니다를 겪었지만 입력값을 제대로 받지 못해서 계속 실패가 뜨는거였다..ㅠ

두번째, 세 번째줄 입력값을 한줄에 다 받아버리는 실수..