[백준 BOJ] 3052번 나머지 (C언어)

2022. 1. 30. 22:58PS (Program Solving)/BOJ (백준)

문제 설명

https://www.acmicpc.net/problem/3052

 

3052번: 나머지

각 수를 42로 나눈 나머지는 39, 40, 41, 0, 1, 2, 40, 41, 0, 1이다. 서로 다른 값은 6개가 있다.

www.acmicpc.net

백준 BOJ 3052번 나머지 문제 사진
백준 BOJ 3052번 나머지 문제 사진2

 

접근 방법 - 나머지 연산자를 응용한 문제

백준의 3052번 문제는 나머지 연산자를 주로 이용하여 해결해야 하는 문제이다.

해당 문제는, 입력받은 숫자들을 42로 나머지 연산자를 취했을 때 서로 다른 결괏값이 몇 개가 되는지 측정해야 하는 문제이다.

필자는 여기에서 크기가 42인 정수형 배열을 사용하여 문제를 해결해보았다.

필자는 아래의 순서대로 코드를 작성하여 문제를 해결하였다.

배열의 사용 원리는 아래에서 설명하고자 한다.

 

코드의 실행 순서

1) 크기가 42인 정수형 배열을 전역 변수로 선언해둔다. (자동으로 모든 배열값 0으로 초기화)

 

2) 10개의 숫자를 입력받고, 입력받는 대로 아래의 연산을 취한다.

- 입력받은 숫자에 42로 나머지 연산자를 취한다.

- 위의 결괏값을 1)의 배열 번호로 갖는 공간에 1을 더한다.

(ex) 8을 입력받았을 경우 -> q[8]에 1을 더한다.

 

3) 정답을 저장할 count를 0으로 초기화하여 선언한다

 

4) 반복문을 통해, 1)의 배열을 탐색한다.

- 해당 공간에 0보다 높은 값이 저장되어있다면 count에 1을 더한다.

 

5) 최종적으로 저장된 count를 출력하며 실행 종료한다.

반응형

 

성공한 코드

#define _CRT_SECURE_NO_WARNINGS
#pragma warning(disable: 4996)
#include <stdio.h>

//백준 3052번 코드
int q[42];
int main() {
	int n[10];
	for (int i = 0; i < 10; i++) {
		scanf("%d", &n[i]);
		q[n[i] % 42]++;
	}

	int count = 0;
	for (int i = 0; i < 42; i++) {
		if (q[i] > 0) {
			count++;
		}
	}
	printf("%d", count);
}

 

제출 결과

백준 BOJ 3052번 나머지 문제 C 제출 결과

(2021.12.11 백준 3052번 문제 제출 결과)

반응형