[ 백준 3052번 ] 나머지

2021. 11. 12. 23:02백준/단계별 문제

백준 3052번 / 5단계 / 나머지

 

백준 3052번 - 나머지

채점 결과는 다음과 같다

  메모리 시간
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