Algorithm

[BaekJoon] 3052 - 나머지

y_lime 2024. 11. 10. 19:37

📄 문제

두 자연수 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