https://www.acmicpc.net/problem/1644
์ ๋ฒ์ ํผ ๋ถ๋ถํฉ ๋ฌธ์ ์ ์์ ๋ฒ์ .
๋น์ทํ ๋ฌธ์ ์ฌ์ ๊ธ๋ฐฉ ํด๊ฒฐ ๊ฐ๋ฅํ๋ค.
์์ด๋์ด
1. ์์ ์ฐพ๊ธฐ
- ์๊ฐ ๋ณต์ก๋๊ฐ ๋น ๋ฅธ ์๋ผํ ์คํ ๋ค์ค์ ์ฒด ๋ฐฉ๋ฒ์ผ๋ก ์์๋ฅผ ์ฐพ์๋ค.
2. ์์์ ์ฐ์ํฉ
- ๋ถ๋ถํฉ ๋ฌธ์ ์ ์ ์ฌํ๊ฒ ํฌ ํฌ์ธํฐ๋ฅผ ์ฌ์ฉํด์ ๊ฒฝ์ฐ์ ์๋ฅผ ์ฐพ์๋ค.
์ ์ฒด ์ฝ๋
import math
n = int(input())
if n == 1:
print(0)
exit(0)
arr = [True] * (n + 1)
arr[0] = False
arr[1] = False
for i in range(2, int(math.sqrt(n)+1)):
if arr[i] == True:
j = 2
while (i * j) <= n:
arr[i*j] = False
j += 1
prime_list = []
for i in range(2, n + 1):
if arr[i] == True:
prime_list.append(i)
left = 0
right = 0
temp_prime_sum = prime_list[0]
count = 0
while left <= right:
if temp_prime_sum > n:
temp_prime_sum -= prime_list[left]
left += 1
else:
if temp_prime_sum == n:
count += 1
right += 1
if right == len(prime_list):
break
temp_prime_sum += prime_list[right]
print(count)
์ฝ๋ ์ค๋ช
import math
n = int(input())
if n == 1:
print(0)
exit(0)
arr = [True] * (n + 1)
arr[0] = False
arr[1] = False
for i in range(2, int(math.sqrt(n)+1)):
if arr[i] == True:
j = 2
while (i * j) <= n:
arr[i*j] = False
j += 1
prime_list = []
for i in range(2, n + 1):
if arr[i] == True:
prime_list.append(i)
๋จผ์ ์๋ผํ ์คํ ๋ค์ค์ ์ฒด ๋ฐฉ๋ฒ์ผ๋ก N๊น์ง ์์๋ฅผ ์ฐพ์์ค๋ค.
์ดํ ์์๋ค์ prime_list์ ๋ฃ์ด์ค๋ค.
์ฌ๊ธฐ์ N์ด 1์ธ ๊ฒฝ์ฐ ์๋์ ์ฝ๋์์ index์๋ฌ๊ฐ ๋๋ฏ๋ก
N์ด 1์ผ ๋๋ 0์ ์ถ๋ ฅํ๊ณ ์ข ๋ฃ์์ผ์ค๋ค.
left = 0
right = 0
temp_prime_sum = prime_list[0]
count = 0
while left <= right:
if temp_prime_sum > n:
temp_prime_sum -= prime_list[left]
left += 1
else:
if temp_prime_sum == n:
count += 1
right += 1
if right == len(prime_list):
break
temp_prime_sum += prime_list[right]
print(count)
temp_prime_sum์ด๋ผ๋ ์์์ ํฉ์ ์ ์ฅํด ์ค ๋ณ์๋ฅผ ์ ์ธํ๋ค.
์ด ๊ฐ์ด ์ฐ๋ฆฌ๊ฐ ๊ตฌํ๋ n๋ณด๋ค ํฌ๋ฉด
left๋ฅผ ํ ์นธ ์ฎ๊ฒจ์ temp_prime_sum๊ฐ์ ๊ฐ์ฅ ์ผ์ชฝ์ ์๋ ์์(prime_list[left])๋ฅผ ๋นผ์ค๋ค.
n๋ณด๋ค ์์ผ๋ฉด right๋ฅผ ํ์นธ ์ฎ๊ฒจ์ prime_list[left]๋ฅผ ๋ํด์ค๋ค.
n๊ณผ ๊ฐ์ผ๋ฉด count์ 1 ๋ ํด์ฃผ๋ฉด ๋๋ค.
'๐งฉ Problem Solving > [๋ฐฑ์ค]' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 10942 ํฐ๋ฆฐ๋๋กฌ? (python ํ์ด์ฌ) (0) | 2022.08.17 |
---|---|
[๋ฐฑ์ค] 1647 ๋์ ๋ถํ ๊ณํ (python ํ์ด์ฌ) (0) | 2022.08.01 |
[๋ฐฑ์ค] 9466 ํ ํ๋ก์ ํธ (python ํ์ด์ฌ) (0) | 2022.07.31 |
[๋ฐฑ์ค] 1806 ๋ถ๋ถํฉ (python ํ์ด์ฌ) (0) | 2022.07.29 |
[๋ฐฑ์ค] 1504 ํน์ ํ ์ต๋จ ๊ฒฝ๋ก (python ํ์ด์ฌ) (0) | 2022.07.28 |