📄 문제
두 자연수 A와 B가 있을 때, A%B는 A를 B로 나눈 나머지 이다. 예를 들어, 7, 14, 27, 38을 3으로 나눈 나머지는 1, 2, 0, 2이다.
수 10개를 입력받은 뒤, 이를 42로 나눈 나머지를 구한다. 그 다음 서로 다른 값이 몇 개 있는지 출력하는 프로그램을 작성하시오.
🏷️ 입력
첫째 줄부터 열번째 줄 까지 숫자가 한 줄에 하나씩 주어진다. 이 숫자는 1,000보다 작거나 같고, 음이 아닌 정수이다.
1
2
3
4
5
6
7
8
9
10
🏷️ 출력
첫째 줄에, 42로 나누었을 때, 서로 다른 나머지가 몇 개 있는지 출력한다.
10
🎈 풀이
입력 받은 숫자들을 배열에 저장한다.
for문으로 모든 인덱스를 42로 나눈다.
처음엔 아래와 생각했다. 하지만 이건 NO !!!!
for문으로 i번째와 i+1을 비교하며 만약 다르면 int cnt를 +1 해준다.
만약 나머지들이 39 40 41 0 1 2 40 41 0 1 이면 결국 cnt는 11이 된다.
때문에 ..
set 사용
- 나머지 값을 set에 저장한다 (set은 중복된 값을 자동으로 제거)
- set에 저장된 값의 개수를 출력한다.
💻 전체 코드
#include <bits/stdc++.h>
using namespace std;
int arr[11], cnt;
int main() {
for(int i=0; i<10; i++){
cin >> arr[i];
}
for (int i = 0; i < 10; i++)
{
arr[i]%=42;
}
set<int> uniqueRemainders;
for (int i = 0; i < 10; i++)
{
uniqueRemainders.insert(arr[i]);
}
cout << uniqueRemainders.size() << endl;
return 0;
}
'Algorithm' 카테고리의 다른 글
[BaekJoon] 10798 - 세로읽기 (0) | 2024.11.13 |
---|---|
[BaekJoon] 23971 - ZOAC 4 (0) | 2024.11.10 |
[BaekJoon] 10813 - 공 바꾸기 (0) | 2024.11.10 |
[BaekJoon] 1546 - 평균 (0) | 2024.11.10 |
[이코테] 개미 전사 (0) | 2024.10.22 |