#38. 백준 번 문제 풀이: 과제 안 내신 분..? 문제 원본 보기
출석번호 1~30번인 학생 30명이 있다. 과제를 28명이 제출했는데, 제출 안한 2명의 출석 번호를 구하시오. 입력: 출석한 학생의 출석번호 목록. 한줄에 하나씩. 출력: 출석하지 않은 학생 2명의 출석번호를 작은 순으로 두줄.
입력/출력
--입력--
3
1
4
5
7
9
6
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
--출력--
2
8
문제풀이+해설
학생수에 해당하는 배열을 만들어 초기값 0으로 주고, 출석한 학생번호에 해당하는 배열값을 1로 변경한다.
배열에서 값이 0인 인덱스 번호를 출력하면 된다.
배열의 인덱스 번호를 출석번호로 간주하는 것이 중요한 핵심이다.

--
배열[31] = 0으로 초기화 #1~30까지 배열 인덱스를 사용할 것이므로 31개를 선언.
루프 28번
  배열[출석번호] = 1
루프 28번
  if 배열[i] == 0: 미제출 학생번호 출력
--
code sol.
ns = [0]*31 
# 31개의 0값을 가진 리스트를 생성
# 리스트 인덱스 번호를 학생번호로 사용. 0은 사용하지 않고 1부터 사용.
for i in range(28): # 주어진 개수 만큼 루프
  v = int(input()) # 수열을 하나씩 입력받는다.
  ns[v] = 1 # 과제를 낸 학생번호에 해당하는 인덱스 배열에 1을 대입

# 배열에서 값이 0인 인덱스가 과제를 내지 않은 학생번호 > 출력   
for i in range(1, 31): # 1~30까지 인덱스값 확인
  if ns[i] == 0: # 과제를 내지 않은 학생번호
    print(i) # 인덱스번호(학생번호) 출력
© 코드솔 - CodeSol. All Rights Reserved.