๐ŸŒžAlgorithm/๐Ÿ”ฅBaekjoon

[Baekjoon] 21920_์„œ๋กœ์†Œ ํ‰๊ท 

๋ฟŒ์•ผ._. 2024. 5. 30. 10:47

Silver IV

๋ฌธ์ œ(์ถœ์ฒ˜: https://www.acmicpc.net/problem/21920)

< ์„œ๋กœ์†Œ ํ‰๊ท  >

 

๋ฌธ์ œ ํ’€์ด 

 

์ตœ๋Œ€๊ณต์•ฝ์ˆ˜๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์„œ๋กœ์†Œ์ธ์ง€ ํŒ๋‹จํ•œ๋‹ค. ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜๊ฐ€ 1์ธ ๊ฐ’๋“ค์„ ๊ตฌํ•ด ํ‰๊ท ์„ ๊ตฌํ•œ๋‹ค.

 

 

 my solution (Java)

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class _21920_ { // ์„œ๋กœ์†Œ ํ‰๊ท 

	public static void main(String[] args) throws IOException {
		BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st;

		int n = Integer.parseInt(bf.readLine());

		st = new StringTokenizer(bf.readLine());
		int arr[] = new int[n];
		for (int i = 0; i < n; i++) {
			arr[i] = Integer.parseInt(st.nextToken());
		}

		int x = Integer.parseInt(bf.readLine());

		long sum = 0;
		int cnt = 0;
		for (int i = 0; i < n; i++) {
			if (gcd(arr[i], x) == 1) {
				sum += arr[i];
				cnt += 1;
			}
		}

		System.out.println(sum / (double) cnt);
	}

	private static int gcd(int a, int b) {
		if (b == 0) {
			return a;
		}
		return gcd(b, a % b);
	}
}
๋ณ€์ˆ˜)
n : ์ž…๋ ฅ๋  ์ˆ˜๋“ค์˜ ๊ฐœ์ˆ˜
arr : ์ˆ˜์—ด
x : X
sum : ์„œ๋กœ์†Œ์ธ ์ˆ˜์˜ ํ•ฉ
cnt : ์„œ๋กœ์†Œ์ธ ์ˆ˜ ๊ฐœ์ˆ˜

 

์ž…๋ ฅ๋  ์ˆ˜๋“ค์˜ ๊ฐœ์ˆ˜๋ฅผ ์ž…๋ ฅ๋ฐ›๋Š”๋‹ค. ์ˆ˜์—ด์„ arr ๋ฐฐ์—ด์— ์ €์žฅํ•˜๊ณ  X๋ฅผ ์ž…๋ ฅ๋ฐ›๋Š”๋‹ค. arr ๋ฐฐ์—ด์„ ํƒ์ƒ‰ํ•˜๋ฉด์„œ gcdํ•จ์ˆ˜ ํ˜ธ์ถœ์„ ํ†ตํ•ด x์™€ ์„œ๋กœ์†Œ์ธ์ง€ ํŒ๋ณ„ํ•œ๋‹ค. ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜ ๊ฐ’์ด 1์ด๋ผ๋ฉด ์„œ๋กœ์†Œ์ด๋ฏ€๋กœ sum์— ๊ฐ’์„ ๋”ํ•˜๊ณ  cnt๋ฅผ 1 ์ฆ๊ฐ€์‹œํ‚จ๋‹ค. ์ตœ์ข… sum/cnt๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

 

gcd(int a, int b)

b๊ฐ€ 0์ด๋ผ๋ฉด a๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

gcd(b, a% b)๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.