Dev/PS
[백준/BOJ] 5597번: 과제 안 내신 분..? (Python) 풀이
KangJerry
2024. 5. 30. 23:51
Baekjoon Online Judge (BOJ) 의 5597번 문제인 '과제 안 내신 분..?' 을 풀어보았다.
[문제 정보]
https://www.acmicpc.net/problem/5597
문제 개요:
X대학 M교수님은 프로그래밍 수업을 맡고 있다. 교실엔 학생이 30명이 있는데, 학생 명부엔 각 학생별로 1번부터 30번까지 출석번호가 붙어 있다.
교수님이 내준 특별과제를 28명이 제출했는데, 그 중에서 제출 안 한 학생 2명의 출석번호를 구하는 프로그램을 작성하시오.
[ 입력 ]
입력은 총 28줄로 각 제출자(학생)의 출석번호 n(1 ≤ n ≤ 30)가 한 줄에 하나씩 주어진다. 출석번호에 중복은 없다.
[ 출력 ]
출력은 2줄이다. 1번째 줄엔 제출하지 않은 학생의 출석번호 중 가장 작은 것을 출력하고, 2번째 줄에선 그 다음 출석번호를 출력한다.
즉, 출석번호는 1~30으로 범위가 고정되있으며, 입력은 28줄 고정(중복 X), 출력은 2줄 고정이다. 1~30까지 입력된 학생명부(배열)에서 입력된 번호들은 제외해주고, 입력 안된 번호만 출력하는 식으로 풀이하면 될 것이다.
알고리즘:
- 학생명부 역할을 할 배열을 만들어준다. (student 변수를 만들고 빈 배열로 초기화해준다.)
- 1~30 범위만큼 반복하는 반복문을 사용하여 빈 student 배열에 1~30까지 번호(값)를 넣어준다.
- 입력이 28줄 고정(과제 제출한 학생 수가 28명으로 고정)이기에, 28번 반복하는 반복문을 만들어 값을 입력받고, 입력받은 값은 student 배열에서 제거한다. (입력받은 값은 출석한 학생이라는 뜻이므로 학생명부에서 제외시킨다.)
- 반복을 완료했다면 배열에는 2개의 값이 남아있을 것이다. 학생의 출석번호 중 작은 값을 먼저 출력해줘야 하므로, 파이썬의 min()과 max() 내장함수를 사용하여 작은 값부터 출력, 이후 다음 출석번호를 출력한다.
코드:
student = []
for i in range(1, 31):
student.append(i)
for _ in range(0, 28):
n = int(input())
student.remove(n)
print(min(student))
print(max(student))
위 풀이에 대한 질문이나 틀린 정보가 있다면 댓글로 말씀해 주시면 감사하겠습니다!
728x90