https://www.acmicpc.net/problem/1929
โ ๋ฌธ์ ์ค๋ช
์ ์ M๊ณผ N์ ์ ๋ ฅํ๋ฉด,
M ~ N ์ฌ์ด์ ์์๋ฅผ ์ถ๋ ฅํ๋ ๋ฌธ์ ์ด๋ค.
โ ์๊ณ ๋ฆฌ์ฆ ์ค๋ช
์ฒ์์๋ ๋จ์ํ๊ฒ ์๊ฐํ์ฌ,
M ~ N์ ์ฐจ๋ก๋ก ํ๋์ฉ ๋๋ ์ง๋ ์๊ฐ ์๋์ง ๊ฒ์ฌํ์ฌ ์ถ๋ ฅํ๋ ๋ฐฉ์์ ์ฌ์ฉํ๋ค.
๊ทธ๋ฌ๋ ์ด ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ฉด ์๊ฐ๋ณต์ก๋๊ฐ O(N^2)์ผ๋ก ์๊ฐ์ด๊ณผ๊ฐ ๋๊ฒ ๋๋ค.
๋ฐ๋ผ์ ์ด ๋ฌธ์ ์์๋ '์๋ผํ ์คํ ๋ค์ค์ ์ฒด' ๋ฐฉ์์ ์ฌ์ฉํ๋ค.
๐ก ์๋ผํ ์คํ ๋ค์ค์ ์ฒด (Sieve of Eratosthenes) ๐ก
์์๋ฅผ ๋ฐ๊ฒฌํ๋ฉด ๊ทธ ์์์ ๋ชจ๋ ๋ฐฐ์๋ฅผ ์์๊ฐ ์๋๋ผ๊ณ ์ฒดํฌํ ํ,
์ฒดํฌ๋์ง ์์ ์๋ฅผ ์ถ๋ ฅํ๋ ๋ฐฉ์์ด๋ค.
์ด ๋ฌธ์ ์ ๋์ ํ์ฌ ์ข ๋ ์์ธํ ์ค๋ช ํ๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
1. ๋ฐฐ์ด์ ํฌ๊ธฐ
์ด ๋ฌธ์ ์ ๊ฒฝ์ฐ ์ต๋ 1,000,000 ๊น์ง ์ ๋ ฅํ ์ ์๋ค๊ณ ํ๊ณ ,
M ~ N ์ฌ์ด์ ์๋ง ๊ณ ๋ คํ๋ฉด ๋๊ธฐ ๋๋ฌธ์ ๋ฐฐ์ด์ ํฌ๊ธฐ๋ฅผ 1,000,001๋ก ์ ํ๋ค.
2. ์์์ธ์ง ์ ๊ฒํ๋ ๋ฐ๋ณต๋ฌธ
์์๊ฐ ์๋ 1์ ์ ์ธํ๊ณ , 2๋ถํฐ sqrt(N)๊น์ง ์ฐจ๋ก๋ก ์์์ธ์ง ํ์ธํ๋ค.
(๋ ๊ฐ์ ๊ฒฝ์ฐ์๋ sqrt()๋ฅผ ์ฌ์ฉํ์ง ์๊ณ , i * i <= n ์ ์ฌ์ฉํ๋ค.)
๋ง์ฝ ์์์ผ ๊ฒฝ์ฐ,
๊ทธ ์ซ์์ ๋ชจ๋ ๋ฐฐ์๋ฅผ ์์๊ฐ ์๋๋ผ๊ณ ํ์ํ๋ฉด ๋๋ค.
3. ์์์ธ์ง ์ถ๋ ฅํ๋ ๋ฐ๋ณต๋ฌธ
M ~ N ์ฌ์ด์ ๋ฐฐ์ด์์ ์์๊ฐ ์๋๋ผ๊ณ ํ์๋ ๊ฒ์ ์ ์ธํ๊ณ ์ถ๋ ฅํ๋ฉด ๋๋ค.
๋ง์ฝ 2๋ถํฐ N์ฌ์ด์ ์์๋ฅผ ์ถ๋ ฅํ๋ ๋ฌธ์ ๋ผ๋ฉด
2๋ฒ ๋ฐ๋ณต๋ฌธ์์ ๋ฐ๋ก ์ถ๋ ฅํด๋ ๋์ง๋ง,
์ด ๋ฌธ์ ์ ๊ฒฝ์ฐ M ~ N ์ฌ์ด์ ์์์ด๊ธฐ ๋๋ฌธ์ ๋ฐ๋ก ๋ฐ๋ณต๋ฌธ์ ๋ง๋ค์๋ค.
์๋์ ๊ทธ๋ฆผ์ ๋ณด๋ฉด ์ดํด๊ฐ ๋ ์ ๋๋ ์ฐธ๊ณ !
โ ์ฝ๋_C++
'๐ STUDY > Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์๊ณ ๋ฆฌ์ฆ] DP ๋์ ๊ณํ๋ฒ (0) | 2022.08.26 |
---|---|
[C / C++] ๋ฐฑ์ค 10989๋ฒ - ์ ์ ๋ ฌํ๊ธฐ 3 (0) | 2022.08.22 |
[C / C++] ๋ฐฑ์ค 11653๋ฒ - ์์ธ์๋ถํด (0) | 2022.08.12 |
[C / C++] ๋ฐฑ์ค 2562๋ฒ - ์ต๋๊ฐ (0) | 2022.07.06 |
[C / C++] ๋ฐฑ์ค 1244๋ฒ - ์ค์์น ์ผ๊ณ ๋๊ธฐ (1) | 2022.04.17 |