๐ ๋ฐฑ์ค ์์์ ์ฐ์ ํฉ
๋ฌธ์ ๋ฅผ ์ฝ์ด๋ณด๋ฉด ์ผ๋จ ์ฃผ์ด์ค ๊ฐ๊น์ง์ ์์ ๋ฆฌ์คํธ๋ฅผ ๊ตฌํด์ผํ๋ค๋ ๊ฒ์ ์๊ฒ์ด๋ค.
N์ด ์ฃผ์ด์ก์๋ ํด๋น ๊ฐ๊น์ง ์์๋ฅผ ๊ตฌํ๋ ๊ฒ์๋ํ ์๊ณ ๋ฆฌ์ฆ์ ์๋ผ์คํ ํ ๋ค์ค์ ์ฒด ์๊ณ ๋ฆฌ์ฆ์ด๋ค.def prime_list(n): is_prime = [True] * (n + 1) is_prime[0], is_prime[1] = False, False for i in range(2, int(n ** 0.5) + 1): if is_prime[i]: for j in range(i*i, n+1, i): is_prime[j] = False return [x for x in range(n+1) if is_prime[x]]
์ผ๋จ ์ด๋ ๊ฒ n์ด ์ฃผ์ด์ง๋ฉด ํด๋น ๊ฐ๊น์ง์ ์์๋ฅผ ๊ตฌํ๋ค.
๋ค์ ์์ ๋ฆฌ์คํธ๋ฅผ ํด๋น ๊ธธ์ด๋ก ๋ฆฌ์คํธ๋ฅผ ๋ง๋ค์ด์ ํด๋น ์๋ฆฟ์ ๊น์ง์ ํฉ์ ๊ตฌํ ๋ฆฌ์คํธ๋ฅผ ๋ง๋ค์๋ค.
dp๋ฅผ ํผ๋ค๊ณ ์๊ฐํ๋ฉด ์ดํด๊ฐ ์ฌ์ธ ๊ฒ์ด๋ค.
- ์ ์ฒด ํ์ด
def prime_list(n): is_prime = [True] * (n + 1) is_prime[0], is_prime[1] = False, False for i in range(2, int(n ** 0.5) + 1): if is_prime[i]: for j in range(i*i, n+1, i): is_prime[j] = False return [x for x in range(n+1) if is_prime[x]] def solve(): import sys num = int(sys.stdin.readline()) primes = prime_list(num) sum_list = [0] * (len(primes) + 1) cnt = 0 for i in range(1, len(primes) + 1): sum_list[i] = sum_list[i-1] + primes[i-1] for i in range(len(primes)): for j in range(i+1, len(primes)+1): if sum_list[j] - sum_list[i] == num: cnt += 1 elif sum_list[j] - sum_list[i] > num: break print(cnt) if __name__ == "__main__": solve()
๊ณจ3 ๋ฌธ์ ์ธ๋ฐ ์์งํ ์ข ๊น๋ค๋ก์ ๋ค ์๊ฐ๋ณต์ก๋๋ ๋ง์ด ์ ๊ฒฝ์จ์ผํ๊ณ ...
๋ค๋ฅธ ํ์ด๋ ์๋ค
๋ค๋ฅธ ์ฌ๋๋ค์ ํ์ด๋ฅผ ๋ณด๋ ํฌ ํฌ์ธํฐ๋ก ํ ์ ์๋ค.
- ํฌ ํฌ์ธํฐ
def solve(): import sys num = int(sys.stdin.readline()) if num == 1: print(0) return primes = prime_list(num) total = primes[0] start, end = 0, 0 result = 0 while end <= len(primes): if total == num: result += 1 end += 1 if end < len(primes): total += primes[end] else: break elif total < num: end += 1 if end < len(primes): total += primes[end] else: break else: total -= primes[start] start += 1 print(result) if __name__ == "__main__": solve()
์ด๋ ๊ฒ ํ๋ฉด ์กฐ๊ธ ๋ ์๊ฐ์ด ๋น ๋ฅด๊ฒ ๋์จ๋ค.
๊ทธ๋ฆฌ๊ณ else: ๋ถ๋ถ์์ start += 1์ ํ์ฌ end์ ๊ฐ์์ง๋ฉด ์ด๋กํ์ง๋ผ๊ณ ์๊ฐ์ ํ์๋๋ฐ ํด๋น ๋ฌธ์ ์์ else ๋ฌธ์ด ์คํ๋๋ค๋ ๊ฒ์ ์ฃผ์ด์ง ์๋ณด๋ค total ๊ฐ์ด ๋ ํฌ๋ค๋ ์๋ฏธ์ธ๋ฐ ์ฃผ์ด์ง ๊ฐ๋ค์ ์ต์ 2๊ฐ ์ด์์ ํฉ์ณ์ผ total๋ณด๋ค ์ปค์ง ์ ์์ผ๋ฏ๋ก start += 1 ํ์ start๊ฐ end์ ๊ฐ์์ง ๊ฒ์ ๋ํ if๋ฌธ์ ์์จ๋ ๋๋ค.5์๋ฌ์ ์๊ณ ๋ฆฌ์ฆ ์์ฒญ ๋ง์ด ํ์๋๋ฐ.. ์ด๋์ ๊ท์ฐจ๋์ฆ๋๋ฌธ์ ์ ์์ฌ๋ ธ๋ค.. ์ต๋ํ! ์ฌ๋ ค๋ณด์ ํ ์ค๋ ๋!