https://www.acmicpc.net/problem/5597
5597번: 과제 안 내신 분..?
X대학 M교수님은 프로그래밍 수업을 맡고 있다. 교실엔 학생이 30명이 있는데, 학생 명부엔 각 학생별로 1번부터 30번까지 출석번호가 붙어 있다. 교수님이 내준 특별과제를 28명이 제출했는데,
www.acmicpc.net
출석번호를 배열에 저장해 정렬한 뒤 없는 수를 찾는 것보단, 길이 30짜리 bool 배열에 과제를 제출한 학생을 표시한 뒤 배열을 순차적으로 탐색하며 과제를 제출하지 않은 학생의 출석번호를 차례로 출력하는 것이 더 간편하다.
#include <cstdio>
#define N 30
int main() {
// ans[i]: i번째 학생이 과제를 제출했다면 true, 아니라면 false
bool ans[N] = { false, };
// 입력을 ans에 바꿔서 저장하기 위한 변수
int buf;
// 과제를 제출한 학생의 출석번호를 받아 ans에 표시
for (int i = 2; i < N; i++) {
scanf("%d", &buf);
ans[buf - 1] = true;
}
// 과제를 제출하지 않은 학생의 출석번호를 반환
for (int i = 0; i < N; i++) if (!ans[i]) printf("%d\n", i + 1);
return 0;
}
'알고리즘 > 문제 풀이' 카테고리의 다른 글
5639번: 이진 검색 트리 (0) | 2021.12.23 |
---|---|
5622번: 다이얼 (0) | 2021.12.23 |
5582번: 공통 부분 문자열 (0) | 2021.12.23 |
5543번: 상근날드 (0) | 2021.12.23 |
5525번: IOIOI (0) | 2021.12.23 |