γ€ŒβŒ¨οΈα΄„s」PS/λ°±μ€€_μˆ˜ν•™&κ΅¬ν˜„

[Baekjoon/λ°±μ€€][3052][C/C++] λ‚˜λ¨Έμ§€

λ£¨λ°€π•ƒπ•¦π•„π•šπ•£ 2023. 1. 31. 10:26
728x90
λ°˜μ‘ν˜•
γ€Žλͺ©μ°¨γ€
0. κ°œμš”

1. 문제
2. 풀이
3. μ½”λ“œ

0. κ°œμš”

μˆ˜ν•™, 사칙연산 문제. λ°”λ‘œ λ¬Έμ œν’€μ΄λ‘œ λ„˜μ–΄κ°€κ² λ‹€.

1. 문제

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

 

3052번: λ‚˜λ¨Έμ§€

각 수λ₯Ό 42둜 λ‚˜λˆˆ λ‚˜λ¨Έμ§€λŠ” 39, 40, 41, 0, 1, 2, 40, 41, 0, 1이닀. μ„œλ‘œ λ‹€λ₯Έ 값은 6κ°œκ°€ μžˆλ‹€.

www.acmicpc.net

[문제]

두 μžμ—°μˆ˜ 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κ°œκ°€ μžˆλ‹€.

2. 풀이

42둜 μ–΄λ–€μˆ˜λ₯Ό λ‚˜λˆˆ λ‚˜λ¨Έμ§€λŠ” 0~41 사이에 μ‘΄μž¬ν•œλ‹€. ∴ λ‚˜λ¨Έμ§€μ— ν•΄λ‹Ήν•˜λŠ” 값을 체크할 수 μžˆλŠ” λ°°μ—΄ remainderλ₯Ό μ„ μ–Έν•œ λ’€, 0으둜 μ΄ˆκΈ°ν™”ν•˜κ³ , λ‚˜λ¨Έμ§€μ˜ 개수λ₯Ό μ„Έμ–΄μ€€λ‹€. μ΄λ•Œ, λ°°μ—΄μ˜ 값이 1이상인 κ²ƒμ˜ 개수λ₯Ό μ„Έμ–΄μ£Όλ©΄, μ„œλ‘œ λ‹€λ₯Έ λ‚˜λ¨Έμ§€ 값이 λͺ‡ 개 μžˆλŠ”μ§€λ₯Ό μ•Œ 수 μžˆλ‹€.

3. μ½”λ“œ

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

int main(int argc, char* argv[]) {
	int input;
	bool remainder[42]={}; //λ‚˜λ¨Έμ§€μ— ν•΄λ‹Ήν•˜λŠ” κ°’ 체크.

	/* μ„œλ‘œ λ‹€λ₯Έ λ‚˜λ¨Έμ§€ 개수 μ„ΈκΈ° */
	for (int i = 0; i < 10; i++) {
		scanf("%d", &input);
		input %= 42;
		remainder[input] = true;
	}

	/* 좜λ ₯ */
	int count = 0;
	for (int i = 0; i < 42; i++)
		if (remainder[i] == true) count++;

	printf("%d", count);

	/* 마무리 */
	return 0;
}
728x90
λ°˜μ‘ν˜•