문제
두 자연수 A와 B가 있을 때, A%B는 A를 B로 나눈 나머지 이다. 예를 들어, 7, 14, 27, 38을 3으로 나눈 나머지는 1, 2, 0, 2이다.
수 10개를 입력받은 뒤, 이를 42로 나눈 나머지를 구한다. 그 다음 서로 다른 값이 몇 개 있는지 출력하는 프로그램을 작성하시오.
입력
첫째 줄부터 열번째 줄 까지 숫자가 한 줄에 하나씩 주어진다. 이 숫자는 1,000보다 작거나 같고, 음이 아닌 정수이다.
출력
첫째 줄에, 42로 나누었을 때, 서로 다른 나머지가 몇 개 있는지 출력한다.
예제 입력 1
1
2
3
4
5
6
7
8
9
10
예제 출력 1
10
각 수를 42로 나눈 나머지는 1, 2, 3, 4, 5, 6, 7, 8, 9, 10이다.
예제 입력 2
42
84
252
420
840
126
42
84
420
126
예제 출력 2
1
모든 수를 42로 나눈 나머지는 0이다.
예제 입력 3
39
40
41
42
43
44
82
83
84
85
예제 출력 3
6
각 수를 42로 나눈 나머지는 39, 40, 41, 0, 1, 2, 40, 41, 0, 1이다. 서로 다른 값은 6개가 있다.
#문제 풀이 방법
1. 10개의 숫자가 입력, 각각의 숫자의 42로 나눈 나머지를 파악하고, 서로 다른 나머지의 개수를 출력한다.
2. 각각의 숫자를 입력받아서 42로 나눈 나머지가 컨테이너에 존재할 경우 패스, 없을 경우에는 개수를 증가시킨다.
이때 컨테이너로 배열이나(리스트) set을 사용할 수 있을 것이다.
반응형
#C/C++
#include <iostream>
using namespace std;
int main()
{
int input;
int num[42]={0};//배열 사용,0으로 초기화
int count=0;
for(int i=0;i<10;i++)
{
cin>>input;
if(num[input%42]==0)//배열에 값이 0일 경우
{
num[input%42]++;
count++;
}
}
cout<<count<<endl;
}
#include <iostream>
#include <set>
using namespace std;
int main()
{
set<int> s;//set을 사용
int count=0;
for(int i=0;i<10;i++)
{
int a;
cin>>a;
if(s.find(a%42)==s.end())//나머지 값이 set에 없을 경우
{
s.insert(a%42);
count++;
}
}
cout<<count;
}
#Python
ls=[]
count=0
for i in range(10):
a=int(input())
if a%42 not in ls:
count+=1
ls.append(a%42)
print(count)
ls=set()
count=0
for i in range(10):
a=int(input())
if a%42 not in ls:
count+=1
ls.add(a%42)
print(count)
반응형
'PS > 백준' 카테고리의 다른 글
[백준/Baekjoon]<1157번> 단어 공부 [C/C++/Python][Class 1] (1) | 2022.09.17 |
---|---|
[백준/Baekjoon]<8958번> OX퀴즈 [C/C++/Python][Class 1] (1) | 2022.09.15 |
[백준/Baekjoon]<2920번> 음계 [C/C++/Python][Class 1] (0) | 2022.09.12 |
[백준/Baekjoon]<1152번> 단어의 개수 [C/C++/Python][Class 1] (2) | 2022.09.12 |
[백준/Baekjoon]<2908번> 상수 [C/C++/Python][Class 1] (0) | 2022.08.03 |