๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ”ฅ PS(Problem Solving) ๐Ÿ”ฅ/goorm

[๊ตฌ๋ฆ„LEVEL] ๋ง๊ฐ€์ง„ ์—๋ผํ† ์Šคํ…Œ๋„ค์Šค์˜ ์ฒด

by dar0m! 2020. 3. 27.
๋‚œ์ด๋„ ์ •๋‹ต๋ฅ 
โ˜…โ˜… -%


ํ”„๋ฆฌ๋ฏธ์—„ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์œ„ํด๋ฆฌ ๋น„ํƒ€์•Œ๊ณ  ์‹œ์ฆŒ3 4์ฃผ์ฐจ

 

goorm

๊ตฌ๋ฆ„์€ ํด๋ผ์šฐ๋“œ ๊ธฐ์ˆ ์„ ์ด์šฉํ•˜์—ฌ ๋ˆ„๊ตฌ๋‚˜ ์ฝ”๋”ฉ์„ ๋ฐฐ์šฐ๊ณ , ์‹ค๋ ฅ์„ ํ‰๊ฐ€ํ•˜๊ณ , ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ๋Š” ํด๋ผ์šฐ๋“œ ์†Œํ”„ํŠธ์›จ์–ด ์ƒํƒœ๊ณ„์ž…๋‹ˆ๋‹ค.

www.goorm.io

๋ฌธ์ œ

 

ํ•ด๊ฒฐ

  1. 1์€ ์†Œ์ˆ˜๊ฐ€ ์•„๋‹ˆ๋‹ˆ ์ œ์™ธํ•˜๊ณ  2๋ถ€ํ„ฐ ์‹œ์ž‘.
  2. i๋กœ ๋‚˜๋‰˜์–ด์ง€๋Š” n์— ๋Œ€ํ•˜์—ฌ
    1. i๊ฐ€ ์†Œ์ˆ˜์ด๊ณ , (n / i)๋„ ์†Œ์ˆ˜๋ผ๋ฉด ๊ฑธ๋Ÿฌ์ง„๋‹ค → 1
    2. i๋‚˜ (n / i)์ค‘ ํ•˜๋‚˜๋ผ๋„ ์†Œ์ˆ˜๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด ํ•ด๋‹น n์€ ๋ง๊ฐ€์ง„ ์—๋ผํ† ์Šคํ…Œ๋„ค์Šค์˜ ์ฒด์— ๊ฑธ๋Ÿฌ์ง€์ง€ ์•Š๋Š”๋‹ค. → 0
  3. i*i๊ฐ€ n์ผ ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณต๋ฌธ์„ ๋Œ๋ฉด์„œ ํ•œ ๋ฒˆ์ด๋ผ๋„ ๋‚˜๋‰˜์–ด์ง€๋Š” i๋ฅผ ๋ฐœ๊ฒฌํ•˜์ง€ ๋ชปํ–ˆ๋‹ค๋ฉด ๊ทธ ์ˆ˜๋Š” ๊ทธ ์ž์ฒด๋กœ ์†Œ์ˆ˜์ด๋‹ค. → 1

 

์ฝ”๋“œ

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
typedef long long ll;
ll n;
bool isPrime(ll num) {
    for (ll i = 2; i * i <= num; i++) {
        if (!(num % i)) return 0;
    }
    return 1;
}
int main() {
    scanf("%lld"&n);
    if (n == 1) {
        printf("0");
        return 0;
    }
    for (ll i = 2; i * i <= n; i++) {
        if (!(n % i)) {
            if (isPrime(i) && isPrime(n / i)) {
                printf("1");
                return 0;
            }
            else { // ํ•˜๋‚˜๋ผ๋„ ๋‚˜๋ˆ ์ง€๋Š”๋ฐ ์†Œ์ˆ˜๋“ค์˜ ๊ณฑ์ด ์•„๋‹ˆ๋ฉด 0
                printf("0");
                return 0;
            }
        }
    }
    printf("1");
    return 0;
}
cs

 

1๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋Š” ๊ฒฝ์šฐ

1๋ถ€ํ„ฐ ํ™•์ธํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” ์†Œ์ˆ˜ํŒ๋ณ„ํ•˜๋Š” ํ•จ์ˆ˜์ธ isPrime์—์„œ 1์ผ ๋•Œ 0์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฌธ์žฅ์„ ์ถ”๊ฐ€ํ•ด์•ผ ํ•œ๋‹ค.

 
bool isPrime(ll num) {
	if (num == 1) return 0;
	for (ll i = 2; i * i <= num; i++) {
		if (!(num % i)) return 0;
	}
	return 1;
}

๋Œ“๊ธ€