[๋ฌธ์ ]
์ฃผ์ด์ง ์ N๊ฐ ์ค์์ ์์๊ฐ ๋ช ๊ฐ์ธ์ง ์ฐพ๋ ๋ฌธ์ .
[ํ์ด]
์ฐ์ ์์๋, 1๋ณด๋ค ํฌ๋ฉฐ 1๊ณผ ์๊ธฐ ์์ ์ด์ธ์ ๋๋์ด์ง์ง ์๋ ์๋ฅผ ๋งํ๋ค.
๊ทธ๋ฆฌ๊ณ ์์ ์ฐพ๋ ๋ฒ์ ํฌ๊ฒ 2๊ฐ์ง๋ก ๋๋๋ค.
1. 2๋ถํฐ ๋ฃจํธN๊น์ง ์์์ธ์ง ์๋์ง๋ฅผ ํ๋ณํ๋ ๋ฒ. ์๊ฐ๋ณต์ก๋ O(๋ฃจํธN).
2. ์๋ผํ ์คํ ๋ค์ค์ ์ฒด ๋ฐฉ๋ฒ์ ์ด์ฉํ์ฌ 2๋ถํฐ ์์ ์ ๋ฐฐ์๋ฅผ ๋ค ์ง์ฐ๋ ๋ฐฉ๋ฒ. ์๊ฐ ๋ณต์ก๋ O(N(log(logN))).
1๋ฒ ๋ฐฉ๋ฒ์์ ๋ฃจํธN๊น์ง๋ง ํ์ธํ๋ ์ด์ ๋ ๊ทธ ์ด์์ ๋ฃจํธN ์ดํ์ ๋ฐฐ์์ด๊ธฐ ๋๋ฌธ์ด๋ค.
์๋ฅผ ๋ค์ด N์ผ๋ก 24๊ฐ ์ฃผ์ด์ง๊ณ 24์ ์ฝ์๋ 1, 2, 3, 4, 6, 7, 12, 24๊ฐ ์์ ๊ฒ์ด๋ค. ๊ทธ๋ฆฌ๊ณ 24๋ 1*24, 2*12, 3*6, 4*6์ผ๋ก ์ฝ์์ ๊ณฑ์ผ๋ก ํํํ ์ ์๋ค. ๋ํ, ๋ฃจํธ24 = 4.xx ์ด๋ค. ์ฆ, 4๊น์ง๋ง ๋ณด๋ฉด ๊ทธ ์ดํ๋ 4์ดํ ์์ ๋ฐฐ์์ด๋ฏ๋ก ํ์ธํ ํ์๊ฐ ์๋ ๊ฒ์ด๋ค. ์ด ๋, i <= ๋ฃจํธN ์ i^2 <= N ๊ณผ ๊ฐ์์ ์์๋์.
๋๋ 1๋ฒ ๋ฐฉ๋ฒ์ผ๋ก 2๋ถํฐ ๋ฃจํธN๊น์ง ์์์ธ์ง๋ฅผ ํ๋ณํ๋ค. ์ด๋ ๋ฃจํธ๋ cmath ์ sqrt ํจ์๋ฅผ ์ฌ์ฉํ๋ค.
์ฐธ๊ณ ๋ก pow(์ ๊ณฑ๊ทผ), sqrt(๋ฃจํธ) ์์ ์์๋์.
[์ฝ๋]
#include <iostream>
#include <cmath>
using namespace std;
bool isDecimal(int num);
int main() {
int num_count, num, sum = 0;
cin >> num_count;
for (int i = 0; i < num_count; i++) {
cin >> num;
if (isDecimal(num)) sum++;
}
cout << sum << "\n";
return 0;
}
//์์: 1๊ณผ ์๊ธฐ์์ ์ธ์๋ ๋๋์ด์ง์ง ์๋ ์
//pow(์ ๊ณฑ๊ทผ), sqrt(๋ฃจํธ)
bool isDecimal(int num) {
for (int i = 2; i <= sqrt(num); i++) {
if(num%i == 0) return false;
}
return (num != 1) ? true : false;
}
'๐ Coding Test Study > Algorithm Problem' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[C++][Baekjoon] 10971๋ฒ ์ธํ์ ์ํ2 (0) | 2022.05.08 |
---|---|
[C++][Baekjoon][Math] 6588๋ฒ ๊ณจ๋๋ฐํ์ ์ถ์ธก(feat. C++ ์ ์ถ๋ ฅ ์๊ฐ ๋จ์ถ) (0) | 2022.04.03 |
[C++][BAEKJOON] 9613๋ฒ GCDํฉ (0) | 2022.04.02 |
[C++][Baekjoon][BFS ํ์] 2206๋ฒ ๋ฒฝ ๋ถ์๊ณ ์ด๋ํ๊ธฐ ์์ธ ํด์ค (0) | 2021.10.16 |
[C++][BAEKJOON][์ํ] 1041๋ฒ ์ฃผ์ฌ์ ๋ฌธ์ ํ์ด & ๋ฐ๋ก (0) | 2021.10.11 |