๐ฉ๐ป๐ป ๋ฌธ์
์๋ฃก์ด๋ ํ ์ปดํจํฐ ๋ณด์ ํ์ฌ์์ ์ผ์ ํ๊ณ ์๋ค. ๊ทธ๋ฌ๋ ๋์ค, ์๋ฃก์ด๋ YESWOA.COM ์ผ๋ก๋ถํฐ ํํ์ด์ง ์ ์ ๋ค์ ๋น๋ฐํค๋ฅผ ๋ง๋ค๋ผ๋ ์ง์๋ฅผ ๋ฐ์๋ค. ์๋ฃก์ด๋ ๋น๋ฐ ํค๋ฅผ ๋ค์๊ณผ ๊ฐ์ ๋ฐฉ๋ฒ์ผ๋ก ๋ง๋ค์๋ค.
๊ฐ์ธ๋ง๋ค ์ด๋ค ํน์ ํ ์์ p์ q๋ฅผ ์ฃผ์ด ๋ ์์์ ๊ณฑ pq๋ฅผ ๋น๋ฐ ํค๋ก ๋์๋ค. ์ด๋ ๊ฒ ํด ์ฃผ๋ฉด ๋ ์์ p,q๋ฅผ ์์ง ๋ชปํ๋ ์ด์, ๋น๋ฐ ํค๋ฅผ ์ ์ ์๋ค๋ ์ฅ์ ์ ๊ฐ์ง๊ณ ์๋ค.
ํ์ง๋ง ์๋ฃก์ด๋ ํ ๊ฐ์ง ์ฌ์ค์ ์๊ณ ๋ง์๋ค. ์ต๊ทผ ์ปดํจํฐ ๊ธฐ์ ์ด ๋ฐ๋ฌํจ์ ๋ฐ๋ผ, ์์๊ฐ ์์ ๊ฒฝ์ฐ์๋ ์ปดํจํฐ๋ก ๋ชจ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ๋๋ ค๋ณด์ ๋น๋ฐ ํค๋ฅผ ์ฝ๊ฒ ์ ์ ์๋ค๋ ๊ฒ์ด๋ค.
์๋ฃก์ด๋ ์ฃผ์ฑ์กฐ๊ต๋๊ป ๋น๋ฐ ํค๋ฅผ ์ ์ถํ๋ ค๋ ๋ฐ๋ก ์ง์ ์ ์ด ์ฌ์ค์ ์์๋๋ค. ๊ทธ๋์ ๋ ์์ p, q ์ค ํ๋๋ผ๋ K๋ณด๋ค ์์ ์ํธ๋ ์ข์ง ์์ ์ํธ๋ก ๊ฐ์ฃผํ์ฌ ์ ์ถํ์ง ์๊ธฐ๋ก ํ์๋ค. ์ด๊ฒ์ ์์ผ๋ก ์ง์ ๊ตฌํด๋ณด๋ ์ผ์ ๋งค์ฐ ํ๋ค ๊ฒ์ด๋ค. ๋น์ ์ ์๋ฃก์ด๋ฅผ ๋์ ๋ ์์์ ๊ณฑ์ผ๋ก ์ด๋ฃจ์ด์ง ์ํธ์ K๊ฐ ์ฃผ์ด์ ธ ์์ ๋, ๊ทธ ์ํธ๊ฐ ์ข์ ์ํธ์ธ์ง ์ข์ง ์์ ์ํธ์ธ์ง ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์ฌ์ผ ํ๋ค.
๐ https://www.acmicpc.net/problem/1837
1837๋ฒ: ์ํธ์ ์
์๋ฃก์ด๋ ํ ์ปดํจํฐ ๋ณด์ ํ์ฌ์์ ์ผ์ ํ๊ณ ์๋ค. ๊ทธ๋ฌ๋ ๋์ค, ์๋ฃก์ด๋ YESWOA.COM ์ผ๋ก๋ถํฐ ํํ์ด์ง ์ ์ ๋ค์ ๋น๋ฐํค๋ฅผ ๋ง๋ค๋ผ๋ ์ง์๋ฅผ ๋ฐ์๋ค. ์๋ฃก์ด๋ ๋น๋ฐ ํค๋ฅผ ๋ค์๊ณผ ๊ฐ์ ๋ฐฉ๋ฒ์ผ๋ก
www.acmicpc.net
- ์ด๋ค ํน์ ํ ์์ p์ q๋ฅผ ์ฃผ์ด ๋ ์์์ ๊ณฑ pq๋ฅผ ๋น๋ฐ ํค
- ๋ ์์ p, q ์ค ํ๋๋ผ๋ K๋ณด๋ค ์์ ์ํธ๋ ์ข์ง ์์ ์ํธ๋ก ๊ฐ์ฃผํ์ฌ ์ ์ถํ์ง ์๊ธฐ
- ๋ ์์์ ๊ณฑ์ผ๋ก ์ด๋ฃจ์ด์ง ์ํธ์ K๊ฐ ์ฃผ์ด์ ธ ์์ ๋, ๊ทธ ์ํธ๊ฐ ์ข์ ์ํธ์ธ์ง ์ข์ง ์์ ์ํธ์ธ์ง ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑ
+) ์์๊ฐ ์์ ๊ฒฝ์ฐ์๋ ์ปดํจํฐ๋ก ๋ชจ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ๋๋ ค๋ณด์ ๋น๋ฐ ํค๋ฅผ ์ฝ๊ฒ ์ ์ ์๋ค๋ ๊ฒ. . . ์ด ๋ฌธ์ ๋ ๋ธ๋ฃจํธ ํฌ์ค?
๐ฉ๐ป๐ป ์ ๋ ฅ
์ํธ P(4 ≤ P ≤ 10^100)์ K (2 ≤ K ≤ 10^6) ์ด ์ฃผ์ด์ง๋ค.
๐ฉ๐ป๐ป ์ถ๋ ฅ
๋ง์ฝ์ ๊ทธ ์ํธ๊ฐ ์ข์ ์ํธ์ด๋ฉด ์ฒซ์งธ ์ค์ GOOD์ ์ถ๋ ฅํ๊ณ , ๋ง์ฝ์ ์ข์ง ์์ ์ํธ์ด๋ฉด BAD์ ์์ r์ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถํ์ฌ ์ถ๋ ฅํ๋๋ฐ r์ ์ํธ๋ฅผ ์ด๋ฃจ๋ ๋ ์์ ์ค ์์ ์์๋ฅผ ์๋ฏธํ๋ค.
๐ฉ๐ป๐ป ์์
๐ฉ๐ป๐ป ์ฝ๋
P, K = map(int, input().split())
for i in range(2, K):
if P % i == 0:
print("BAD", i)
break
else:
print("GOOD")
→ ์ ๋ ฅ์ผ๋ก ๋ ์ ์ P์ K๋ฅผ ๋ฐ๊ณ , P๊ฐ 2๋ถํฐ K-1๊น์ง์ ์ด๋ค ์ ์๋ก๋ ๋๋์ด๋จ์ด์ง์ง ์๋ ๊ฒฝ์ฐ "GOOD"์ ์ถ๋ ฅ, ๊ทธ๋ ์ง ์์ผ๋ฉด P๋ฅผ ๋๋๋ ์ฒซ ๋ฒ์งธ ์ ์๋ฅผ "BAD"์ ํจ๊ป ์ถ๋ ฅํ๋ ์ฝ๋
# ์
๋ ฅ
P, K = map(int, input().split())
- input() ํจ์๋ก๋ถํฐ ๋ฐ์ ์ ๋ ฅ ๋ฌธ์์ด์ ๊ณต๋ฐฑ์ ๊ธฐ์ค์ผ๋ก ๋ถ๋ฆฌํฉ๋๋ค. split() ํจ์๋ ๋ฌธ์์ด์ ๋ถ๋ฆฌํ ํ ๋ฆฌ์คํธ๋ก ๋ฐํํฉ๋๋ค.
- map(int, ...)๋ฅผ ์ฌ์ฉํ์ฌ ๋ถ๋ฆฌ๋ ๋ ๋ฌธ์์ด์ ์ ์๋ก ๋ณํํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ๋ ์ ์๊ฐ ๋ณ์ P์ K์ ๊ฐ๊ฐ ํ ๋น๋ฉ๋๋ค.
ex. ์ฌ์ฉ์๊ฐ "10 5"๋ผ๋ ์ ๋ ฅ์ ์ ๊ณตํ๋ค๊ณ ๊ฐ์ ํ๋ฉด,
- input() ํจ์๋ "10 5" ๋ฌธ์์ด์ ๋ฐ์ต๋๋ค.
- split() ํจ์๋ ์ด ๋ฌธ์์ด์ ๊ณต๋ฐฑ์ ๊ธฐ์ค์ผ๋ก ๋ถ๋ฆฌํ์ฌ ["10", "5"]๋ผ๋ ๋ฆฌ์คํธ๋ฅผ ์์ฑํฉ๋๋ค.
- map(int, ...)๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ๊ฐ์ ๋ฌธ์์ด์ ์ ์๋ก ๋ณํํ์ฌ P์๋ 10์ด, K์๋ 5๊ฐ ํ ๋น๋ฉ๋๋ค.
for i in range(2, K):
if P % i == 0:
print("BAD", i)
break
else:
print("GOOD")
for ๋ฃจํ๋ฅผ ์ฌ์ฉํ์ฌ i๋ฅผ 2๋ถํฐ K-1๊น์ง์ ์ ์๋ก ๋ฐ๋ณตํฉ๋๋ค.
- ๊ฐ i์ ๋ํด์, P๋ฅผ i๋ก ๋๋ด์ ๋ ๋๋จธ์ง๋ฅผ ๊ฒ์ฌํฉ๋๋ค. P % i๊ฐ 0์ด๋ฉด P๊ฐ i๋ก ๋๋์ด๋จ์ด์ง๋ค๋ ์๋ฏธ์ด๋ฏ๋ก "BAD"์ i์ ๊ฐ์ ์ถ๋ ฅํ๊ณ ๋ฃจํ๋ฅผ ์ข ๋ฃํฉ๋๋ค. ์ด ๋ break ๋ฌธ์ด ์ฌ์ฉ๋์ด ๋ฃจํ๋ฅผ ์ข ๋ฃํฉ๋๋ค.
- ๋ง์ฝ break ๋ฌธ์ด ์คํ๋์ง ์๊ณ for ๋ฃจํ๊ฐ ์ ์์ ์ผ๋ก ์ข ๋ฃ๋๋ค๋ฉด, K๊น์ง ๋๋ ์ง๋ ์ด๋ค ์ ์๋ ๋ฐ๊ฒฌ๋์ง ์์์ผ๋ฏ๋ก "GOOD"์ ์ถ๋ ฅํฉ๋๋ค.
ex. ์ฌ์ฉ์๊ฐ "10 5"๋ฅผ ์ ๋ ฅํ ๊ฒฝ์ฐ,
- P์ 10, K์ 5๊ฐ ํ ๋น๋ฉ๋๋ค.
- for ๋ฃจํ๊ฐ 2๋ถํฐ 4๊น์ง i๋ฅผ ๋ฐ๋ณตํฉ๋๋ค.
- i๊ฐ 2์ผ ๋, 10์ 2๋ก ๋๋๋ฉด ๋๋จธ์ง๊ฐ 0์ด๋ฏ๋ก "BAD 2"๋ฅผ ์ถ๋ ฅํ๊ณ ๋ฃจํ๋ฅผ ์ข ๋ฃํฉ๋๋ค.
๐ฉ๐ป๐ป ์ ๋ต ์ ์ถ
'๊ณต๋ถ > ๋ฐฑ์ค (Baekjoon)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค/ํ์ด์ฌ] 9469๋ฒ: ํฐ ๋ ธ์ด๋ง (2) | 2023.10.30 |
---|---|
[๋ฐฑ์ค/ํ์ด์ฌ] 7595๋ฒ: Triangles (0) | 2023.10.12 |
[๋ฐฑ์ค/ํ์ด์ฌ] 2857๋ฒ: FBI (0) | 2023.09.21 |
[๋ฐฑ์ค/ํ์ด์ฌ] 11365๋ฒ: !๋ฐ๋น ๊ธ์ผ (0) | 2023.09.08 |
[๋ฐฑ์ค/ํ์ด์ฌ] 1264๋ฒ: ๋ชจ์์ ๊ฐ์ (1) | 2023.09.07 |