반응형
백준 5597 | C++ 과제 안 내신 분 ..?
https://www.acmicpc.net/problem/5597
문제
X대학 M교수님은 프로그래밍 수업을 맡고 있다. 교실엔 학생이 30명이 있는데, 학생 명부엔 각 학생별로 1번부터 30번까지 출석번호가 붙어 있다.
교수님이 내준 특별과제를 28명이 제출했는데, 그 중에서 제출 안 한 학생 2명의 출석번호를 구하는 프로그램을 작성하시오.
접근 방법
제출한 사람 번호를 받는 배열을 한 개 만든다 : 28명
• 제출한 사람 번호를 입력 받는다
제출한 사람을 체크하는 배열을 한 개 만든다 : 30명(크기 : 31)
• 0번째 제외(0번째는 1) 0으로 초기화
• 제출한 사람(인덱스) -> 1로 표시
0인 인덱스만 출력
정답 코드
#include <iostream>
using namespace std;
int main(){
int arr[28];
int submit[31]= {1,};
for(int i = 0; i<28;i++){
cin>>arr[i];
} for(int i = 0 ; i < 28 ; i++){
submit[arr[i]] = 1;
}
for(int i = 0 ; i< 31; i++){
if(submit[i] != 1){
cout << i <<endl;
}
}
return 0;
}
코드 설명
int arr[28];
int submit[31]= {1,};
- Arr : 제출한 학생들의 번호를 담기 위한 배열
- Submit : 누가 제출했는지 체크하기 위한 배열
- Submit [0] 은 1로 채워준다 : 0으로 채운 인덱스를 출력할 것이기 때문에
for(int i = 0; i<28;i++){
cin>>arr[i];
} for(int i = 0 ; i < 28 ; i++){
submit[arr[i]] = 1;
}
- arr[i]에 있는 숫자를 인덱스로 받아 해당 번호는 1로 채워준다(숙제를 제출함)
for(int i = 0 ; i< 31; i++){
if(submit[i] != 1){
cout << i <<endl;
}
}
- 1이 아닌 인덱스 출력
반응형
'코딩테스트 | 백준' 카테고리의 다른 글
[백준 10811 | C++] 바구니 뒤집기_ 1차원배열(array, reverse, for, 배열 순서 바꾸기) (0) | 2025.01.12 |
---|---|
[백준 3052 | C++] 나머지_ 1차원배열(이중 for문, set 자료 구조, 중복된 값 제거하기) (0) | 2025.01.12 |
[백준 10813 | C++] 공 바꾸기_ 1차원배열(array, for) (0) | 2025.01.10 |
[백준 10818 | C++] 최소, 최대_ 배열 순회, 1차원 배열(array loop, for) (0) | 2025.01.02 |
[백준 10871 | C++] X보다 작은 수_ 배열 순회(array loop, for, vector) (0) | 2025.01.01 |