언어/c, c++
백준(BAEKJOOB) 3052번 나머지 문제 c언어
깡 딱
2023. 1. 6. 11:04
728x90
문제
두 자연수 A와 B가 있을 때, A% B는 A를 B로 나눈 나머지이다. 예를 들어, 7, 14, 27, 38을 3으로 나눈 나머지는 1, 2, 0, 2이다.
수 10개를 입력받은 뒤, 이를 42로 나눈 나머지를 구한다. 그 다음 서로 다른 값이 몇 개 있는지 출력하는 프로그램을 작성하시오.
먼저 문제풀이 부터 하면
printf("%d", 1 % 42);
문제 해결을 위해 1을 42로 나눈 나머지가 무엇인지 먼저 확인해보았고
조건 1>> 10개를 입력받을 수 있다고 이야기하였기 때문에
int a;
for (int i = 0; i < 10; i++) {
scanf_s("%d", &a);
}
반복문을 만들어 줬습니다.
조건 2>> 42로 나눈 나머지 이기 때문에
#include<stdio.h>
//printf("%d", 1 % 42);
int main() {
int array[1000] = { 0, };
int a;
for (int i = 0; i < 10; i++) {
scanf_s("%d", &a);
array[i] = a % 42;
}
}//main
조건 3>>또 서로 다른 값이 몇 개 있는지 출력
두 수를 비교하기 위해 이중 for문을 이용하고 array i의 값과 j의 값이 같으면 count 해줍니다
하지만 count가 올라가지 않으면 0이 되기 때문에 sum을++해주게 됩니다
for (int i = 0; i < 10; i++) {
int count = 0;
for (int j = i + 1; j < 10; j++) {
if (array[i] == array[j]) {
count++;
}
}
if (count == 0) {
sum++;
}
}
int count=0을 한 이유는 다시 초기화해주기 위해서이다.
총 코드
#include<stdio.h>
//printf("%d", 1 % 42);
int main() {
int array[1000] = { 0, };
int a;
int sum = 0;
for (int i = 0; i < 10; i++) {
scanf_s("%d", &a);
array[i] = a % 42;
}
//검사를 위해
for (int i = 0; i < 10; i++) {
int count = 0;
for (int j = i + 1; j < 10; j++) {
if (array[i] == array[j]) {
count++;
}
}
if (count == 0) {
sum++;
}
}
printf("%d", sum);
}//main
728x90