์๋ ํ์ธ์! ์ค๋์ ๋ฐฑ์ค 1978๋ฒ ๋ฌธ์ “์์ ์ฐพ๊ธฐ”๋ฅผ ํ์ด๋ณด๊ฒ ์ต๋๋ค. ์ด ๋ฌธ์ ๋ ์ฃผ์ด์ง ์๋ค ์ค ์์๊ฐ ๋ช ๊ฐ์ธ์ง๋ฅผ ์ฐพ๋ ๋ฌธ์ ์ ๋๋ค. ์์๋ฅผ ํ๋จํ๋ ์๊ณ ๋ฆฌ์ฆ์ ๊ตฌํํด๋ณด๊ณ , ์ด๋ฅผ ํตํด ์์์ ๊ฐ์๋ฅผ ์ธ์ด๋ณด๊ฒ ์ต๋๋ค.
1. ๋ฌธ์ ์ค๋ช
๋ฌธ์ ๋งํฌ
๋ฌธ์ ๋งํฌ๋ ์ฌ๊ธฐ์์ ํ์ธํ์ค ์ ์์ต๋๋ค.
๋ฌธ์ ๋ด์ฉ
์์ฐ์ N์ด ์ฃผ์ด์ก์ ๋, N๊ฐ์ ์ ์ค์์ ์์๊ฐ ๋ช ๊ฐ์ธ์ง ์ฐพ์์ ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์ธ์.
์ ๋ ฅ
• ์ฒซ ์ค์ ์์ ๊ฐ์ N (1 ≤ N ≤ 100)
• ๋ค์ ์ค์ N๊ฐ์ ์๊ฐ ์ฃผ์ด์ง๋๋ค. (๊ฐ ์๋ 1๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ๊ณ , 1000๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์ฐ์)
์ถ๋ ฅ
• ์ฃผ์ด์ง N๊ฐ์ ์ ์ค์์ ์์์ ๊ฐ์๋ฅผ ์ถ๋ ฅํฉ๋๋ค.
2. ์ ๊ทผ๋ฒ
๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋ค์๊ณผ ๊ฐ์ ์ ๊ทผ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ์ต๋๋ค:
1. ์์์ ์ ์: ์์๋ 1๊ณผ ์๊ธฐ ์์ ์ด์ธ์ ์๋ก ๋๋์ด ๋จ์ด์ง์ง ์๋ ์๋ฅผ ์๋ฏธํฉ๋๋ค.
2. ์์ ํ๋จ ํจ์: ์ฃผ์ด์ง ์๊ฐ ์์์ธ์ง ์ฌ๋ถ๋ฅผ ํ๋จํ๋ ํจ์๋ฅผ ์์ฑํฉ๋๋ค.
3. ์ ๋ ฅ ์ฒ๋ฆฌ: ํ์ค ์ ๋ ฅ์ ํตํด ์์ ๊ฐ์์ ๊ฐ ์๋ฅผ ์ ๋ ฅ๋ฐ์ต๋๋ค.
4. ์์ ๊ฐ์ ๊ณ์ฐ: ์ ๋ ฅ๋ฐ์ ์ ์ค์์ ์์์ ๊ฐ์๋ฅผ ์ธ์ด ์ถ๋ ฅํฉ๋๋ค.
3. Python ์ฝ๋
import sys
input = sys.stdin.readline
# ์์์ฌ๋ถ ํ๋จํ๋ ํจ์
def chkPrime(num):
if num == 1:
return 1
if num == 2 or num == 3:
return 0
for i in range(2, int(num**0.5) + 1):
if num % i == 0:
return 1
return 0
# ์์ ๊ฐ์ ์
๋ ฅ ์ฒ๋ฆฌ
N = int(input())
arr = list(map(int, input().split()))
# ์์์ ๊ฐ์๋ฅผ ์ถ๋ ฅ
ans = N
for i in arr:
ans -= chkPrime(i)
print(ans)
4. ์ฝ๋ ์ค๋ช
- chkPrime ํจ์:
• ์ ๋ ฅ๋ ์ซ์๊ฐ ์์์ธ์ง ์๋์ง๋ฅผ ํ๋จํฉ๋๋ค.
• 1์ ์์๊ฐ ์๋๋ฏ๋ก 1์ ๋ฐํํฉ๋๋ค.
• 2์ 3์ ์์์ด๋ฏ๋ก 0์ ๋ฐํํฉ๋๋ค.
• ๊ทธ ์ธ์ ์๋ 2๋ถํฐ ํด๋น ์์ ์ ๊ณฑ๊ทผ๊น์ง์ ์๋ก ๋๋์ด ๋จ์ด์ง๋์ง ํ์ธํ์ฌ ์์๊ฐ ์๋๋ฉด 1์ ๋ฐํํ๊ณ , ์์์ด๋ฉด 0์ ๋ฐํํฉ๋๋ค.
- ๋ฉ์ธ ํจ์:
• ๋จผ์ ์์ ๊ฐ์๋ฅผ ์ ๋ ฅ๋ฐ๊ณ , ๊ฐ ์๋ฅผ ๋ฆฌ์คํธ ํํ๋ก ์ ๋ ฅ๋ฐ์ต๋๋ค.
• ๊ฐ ์๊ฐ ์์์ธ์ง ํ๋จํ์ฌ ์์์ ๊ฐ์๋ฅผ ์ธ์ด ์ถ๋ ฅํฉ๋๋ค.
*** ์ ๊ณฑ๊ทผ ๊น์ง๋ง ๊ฒ์ฌํ๋ ์ด์ ๋? ***
1. ์ฝ์ ์์ ๋์นญ์ฑ:
• ์ด๋ค ์ N์ด ์์ ๋, a * b = N์ ๋ง์กฑํ๋ ์ฝ์ ์ (a, b)๊ฐ ์กด์ฌํฉ๋๋ค. ์๋ฅผ ๋ค์ด, 36์ ๊ฒฝ์ฐ ์ฝ์ ์์ (1, 36), (2, 18), (3, 12), (4, 9), (6, 6)์ ๋๋ค.
• ์ฌ๊ธฐ์ ์ฃผ๋ชฉํ ์ ์ ์ฝ์ ์ (a, b)์์ a์ b ๋ ์ค ํ๋๋ ํญ์ √N ์ดํ๋ผ๋ ๊ฒ์ ๋๋ค. ์๋ฅผ ๋ค์ด, 36์ ์ ๊ณฑ๊ทผ์ 6์ด๊ณ , 36์ ๋ชจ๋ ์ฝ์ ์ ์ค์์ ํฐ ์ชฝ์ ๋ชจ๋ 6๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ต๋๋ค.
2. ์ ๊ณฑ๊ทผ์ ๋์ง ์๋ ์ฝ์:
• ๋ง์ฝ ์ด๋ค ์ N์ด ์์๊ฐ ์๋๋ผ๊ณ ๊ฐ์ ํ๋ฉด, N = a * b๊ฐ ๋๋ a์ b๊ฐ ์กด์ฌํ ๊ฒ์ ๋๋ค. ์ฌ๊ธฐ์ a์ b ๋ ๋ค √N๋ณด๋ค ํฌ๋ค๋ฉด, a * b๋ N๋ณด๋ค ์ปค์ผ ํ๋ฏ๋ก a๋ b ์ค ํ๋๋ ๋ฐ๋์ √N ์ดํ์ด์ด์ผ ํฉ๋๋ค.
• ๋ฐ๋ผ์, N์ด ์์๊ฐ ์๋๋ ค๋ฉด 2๋ถํฐ √N๊น์ง์ ์ด๋ค ์๋ก ๋๋์ด ๋จ์ด์ ธ์ผ ํฉ๋๋ค.
5. Github์ผ๋ก ํ์ธ
'๐ ์๊ณ ๋ฆฌ์ฆ > BOJ(๋ฐฑ์ค)_Python' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
BOJ(๋ฐฑ์ค) 7795[๋จน์ ๊ฒ์ธ๊ฐ ๋จนํ ๊ฒ์ธ๊ฐ] (0) | 2024.06.16 |
---|---|
BOJ(๋ฐฑ์ค) 14252[๊ณต์ฝ์์ด] (0) | 2024.06.15 |
BOJ(๋ฐฑ์ค) 2503[์ซ์ ์ผ๊ตฌ] (0) | 2024.06.07 |
BOJ(๋ฐฑ์ค) 19532[์ํ์ ๋น๋๋ฉด๊ฐ์์ ๋๋ค] (0) | 2024.06.07 |
BOJ(๋ฐฑ์ค) 14568[์ฌํ ๋๋ ์ฃผ๊ธฐ] (0) | 2024.06.07 |