[๋ฐฑ์ค€] 1644 ์†Œ์ˆ˜์˜ ์—ฐ์†ํ•ฉ (python ํŒŒ์ด์ฌ)

2022. 7. 31. 05:10ยท๐Ÿงฉ Problem Solving/[๋ฐฑ์ค€]

https://www.acmicpc.net/problem/1644

 

1644๋ฒˆ: ์†Œ์ˆ˜์˜ ์—ฐ์†ํ•ฉ

์ฒซ์งธ ์ค„์— ์ž์—ฐ์ˆ˜ N์ด ์ฃผ์–ด์ง„๋‹ค. (1 ≤ N ≤ 4,000,000)

www.acmicpc.net


์ €๋ฒˆ์— ํ‘ผ ๋ถ€๋ถ„ํ•ฉ ๋ฌธ์ œ์˜ ์†Œ์ˆ˜ ๋ฒ„์ „.

๋น„์Šทํ•œ ๋ฌธ์ œ์—ฌ์„œ ๊ธˆ๋ฐฉ ํ•ด๊ฒฐ ๊ฐ€๋Šฅํ–ˆ๋‹ค.


์•„์ด๋””์–ด

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
'๐Ÿงฉ Problem Solving/[๋ฐฑ์ค€]' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [๋ฐฑ์ค€] 10942 ํŒฐ๋ฆฐ๋“œ๋กฌ? (python ํŒŒ์ด์ฌ)
  • [๋ฐฑ์ค€] 1647 ๋„์‹œ ๋ถ„ํ•  ๊ณ„ํš (python ํŒŒ์ด์ฌ)
  • [๋ฐฑ์ค€] 9466 ํ…€ ํ”„๋กœ์ ํŠธ (python ํŒŒ์ด์ฌ)
  • [๋ฐฑ์ค€] 1806 ๋ถ€๋ถ„ํ•ฉ (python ํŒŒ์ด์ฌ)
์ œ๋ด‰์•„
์ œ๋ด‰์•„
  • ์ œ๋ด‰์•„
    Overthinking
    ์ œ๋ด‰์•„
    fake it till you make it.
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (104)
      • ๐Ÿงฉ Problem Solving (83)
        • [๋ฐฑ์ค€] (74)
        • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] (7)
        • [SW Expert Academy] (1)
        • [์•Œ๊ณ ๋ฆฌ์ฆ˜ for PS] (1)
      • ๐Ÿ“ฆ Data Structure (2)
      • ๐Ÿ“œ Language (14)
        • [python] (14)
      • ๐Ÿ–ค Git (1)
      • ๐ŸŒ† ์ผ์ƒ (2)
        • ๐Ÿ’ฌ ๋ฒฝ๋ณด๊ณ  ๋งํ•˜๊ธฐ (2)
      • ๐Ÿ—„๏ธ ๊ธฐํƒ€ (2)
      • ๐Ÿ”ต css (0)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
    • ๋ฐฉ๋ช…๋ก
  • ๋งํฌ

  • ๊ณต์ง€์‚ฌํ•ญ

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    BFS
    ๋ฐ๋ธŒ์ฝ”์Šค
    ํŒŒ์ด์ฌ
    ๋ฐฑ์ค€
    ๋ฐฑํŠธ๋ž˜ํ‚น
    ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค
    ํ”Œ๋กœ์ด๋“œ์›Œ์…œ
    ํ”Œ๋กœ์ด๋“œ ์™€์ƒฌ
    Bruteforce
    ๋ถ„ํ•  ์ •๋ณต
    boj
    ํŒฐ๋ฆฐ๋“œ๋กฌ
    ๋ธŒ๋ฃจํŠธํฌ์Šค
    ๋ถ€๋ถ„ํ•ฉ
    ์žฌ๊ท€
    slicing
    DP
    ํˆฌํฌ์ธํ„ฐ
    ๊ทธ๋ฆฌ๋””
    imos
    ์Šคํƒ
    Python
    ๋‹ค์ต์ŠคํŠธ๋ผ
    DFS
    SWEA
    ์ •์ฒ˜๊ธฐ
    ๊ตฌํ˜„
    ์œ„์ƒ์ •๋ ฌ
    ๋ˆ„์ ํ•ฉ
    ๋ƒ…์ƒ‰
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
์ œ๋ด‰์•„
[๋ฐฑ์ค€] 1644 ์†Œ์ˆ˜์˜ ์—ฐ์†ํ•ฉ (python ํŒŒ์ด์ฌ)
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”