[ 백준 3052번 ] 나머지
2021. 11. 12. 23:02ㆍ백준/단계별 문제
백준 3052번 / 5단계 / 나머지
채점 결과는 다음과 같다
메모리 | 시간 | |
1번째 방법 | 1112 KB | 0 ms |
문제 풀이
주어지는 정수 10개
기본 결과 출력 값은 10 이므로 result 값은 10으로 선언해준다.
1. 반복문 i가 0부터 9까지 정수 n 값을 입력받으면서 동시에 나머지 연산자를 사용해 MOD 배열에 값을 넣는다
i = 0
n = 1
1 % 42 = 1
mod [i] = mod [0] = 1
2. 이중 반복문 구조로 자기 자신을 제외한 모든 값을 자신이 가지고 있는 값이랑 같은지 비교하면서 있으면 result 값을 마이너스해준다 그 후 중복검사를 방지하기 위해 배열에는 들어갈 수 없는 값인 -1을 넣어준다.
mod [0] = 1
mod [1] = 1
조건 mod [i]와 mod [j] 같아야 하고 i와 j 가 서로 달라야 한다
mod [0]과 mod [0] 은 같은 값이므로 true
i = 0, j = 0 같은 값이므로 false
result 값은 변화 없음
mod [0]과 mod [1] 은 같은 값이므로 true
i = 0, j = 1 이므로 다른 값 이므로 true
조건에 만족하므로
result 값 마이너스 처리
mod [i] = mod [0]에 들어올 수 없는 값 -1을 넣어주면서 다음 반복 구조에서 무조건 false를 반환하게 해서 중복검사를 피해 준다.
코드
#include <stdio.h>
#include <algorithm>
#include <math.h>
using namespace std;
int main() {
int i, j, n;
int mod[10];
int result = 10;
for ( i = 0; i < 10; i++ ) {
scanf("%d", &n);
mod[i] = n % 42;
}
for ( i = 0; i < 10; i++ ) {
for ( j = 0; j < 10; j++ ) {
if ( mod[i] == mod[j] && i != j ) {
result--;
mod[i] = -1;
}
}
}
printf("%d", result);
}
'백준 > 단계별 문제' 카테고리의 다른 글
[ 백준 8958번] OX퀴즈 (0) | 2021.11.15 |
---|---|
[ 백준 1546번 ] 평균 (0) | 2021.11.12 |
[ 백준 2562번 ] 최댓값 (0) | 2021.11.09 |
[ 백준 10818번 ] 최소, 최대 (0) | 2021.11.09 |
[ 백준 10871번 ] 더하기 사이클 (0) | 2021.11.08 |