반응형
https://www.acmicpc.net/problem/3052
문제
두 자연수 A와 B가 있을 때, A%B는 A를 B로 나눈 나머지 이다. 예를 들어, 7, 14, 27, 38을 3으로 나눈 나머지는 1, 2, 0, 2이다.
수 10개를 입력받은 뒤, 이를 42로 나눈 나머지를 구한다. 그 다음 서로 다른 값이 몇 개 있는지 출력하는 프로그램을 작성하시오.
입력
첫째 줄부터 열번째 줄 까지 숫자가 한 줄에 하나씩 주어진다. 이 숫자는 1,000보다 작거나 같고, 음이 아닌 정수이다.
출력
첫째 줄에, 42로 나누었을 때, 서로 다른 나머지가 몇 개 있는지 출력한다.
간단하게 배열을 이용해서 나머지의 개수를 셌다.
#include <stdio.h>
int main(void)
{
int arr[42] = { 0, }, i, a;
for (i = 0; i < 10; i++)
{
scanf("%d", &a);
arr[a % 42] = 1;
}
a = 0;
for (i = 0; i < 42; i++)
{
a += arr[i];
}
printf("%d\n", a);
return 0;
}
참 쉽죠? 이렇게 쉬운 문제를 굳이 글로 쓰는 이유는 C 말고 C++을 이용하면 더 간단하게 해결할 수 있기 때문이다.
C++로 짠다면 STL의 set을 이용해서 매우 심플하게 풀 수 있다.
#include <iostream>
#include <set>
using namespace std;
int main(void)
{
set<int> s;
int a;
for (int i = 0; i < 10; i++)
{
cin >> a;
s.insert(a % 42);
}
cout << s.size() << "\n";
return 0;
}
깔끔 그 자체ㅎㅎ
반응형
'프로그래밍 > C | C++' 카테고리의 다른 글
[백준] 2447번: 별 찍기 - 10 (0) | 2019.12.28 |
---|---|
[백준] 1065번: 한수 (0) | 2019.12.15 |
[백준] 4673번: 셀프 넘버 (0) | 2019.10.05 |
[백준] 1546번: 평균 (0) | 2019.09.29 |
[백준] 2920번: 음계 (0) | 2019.09.12 |
[C] 라그랑주 보간법을 이용한 달팽이 배열 출력 (0) | 2019.07.09 |
삼진 탐색 (Ternary search) (0) | 2019.07.06 |
다양한 피보나치 수열 알고리즘 (0) | 2019.07.04 |