# 문제
수 10개를 입력받은 뒤, 이를 42로 나눈 나머지를 구한다. 그 다음 서로 다른 값이 몇 개 있는지 출력하는 프로그램을 작성하시오.
# 풀이
이 문제는 무엇을 구해야 하는지 잘 봐야한다.
서로 다른 나머지가 몇 개 있는지 출력하면 되는 문제다.
바로 정답 소스코드를 확인해보자.
#include <iostream>
using namespace std;
int main(){
bool remainder[42] = {0}; // 42로 나눈 나머지는 0~41까지 존재
int num;
int cnt = 0;
while(cin >> num){
remainder[num%42] = 1;
}
for(int i=0; i<42; i++){
if(remainder[i] == 1) cnt++;
}
cout << cnt;
return 0;
}
주석에도 적어둔 것처럼 어떤 숫자를 42로 나눌 경우, 나머지는 0부터 41까지 존재한다.
따라서 bool 타입으로 0~41번 인덱스가 존재하는 크기 42의 배열을 만들고 기본 값을 false로 설정해두었다.
그리고 숫자를 입력받을 변수 num, 서로 다른 나머지가 몇 개 있는지 세어줄 cnt 변수를 만들었다.
while(cin >> num){
remainder[num%42] = 1;
}
지난 번처럼 EOF를 활용해 입력과 반복문 처리를 해주고, num%42로 나눈 나머지 값을 배열의 인덱스로 넣었다.
한 번이라도 나온 나머지 값은 true로 변경해주면, 입력을 모두 받은 후 true인 것만 세어 출력하면 된다.
for(int i=0; i<42; i++){
if(remainder[i] == 1) cnt++;
}
cout << cnt;
간단하게 끝!
728x90
'백준 > C++' 카테고리의 다른 글
[백준] 1546번: 평균 | C++ 풀이 (0) | 2023.05.16 |
---|---|
[백준] 10811번: 바구니 뒤집기 | C++ 풀이 (0) | 2023.05.14 |
[백준] 5597번: 과제 안 내신 분..? | C++ 풀이 (0) | 2023.05.12 |
[백준] 10818번: 최소, 최대 | C++ 풀이 (0) | 2023.05.10 |
[백준] 10871번: X보다 작은 수 | C++ 풀이 (0) | 2023.05.09 |