์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ/BOJ_Python

[BOJ/Step9] 1978 : ์†Œ์ˆ˜ ์ฐพ๊ธฐ (Python)

NaNaRin๐Ÿ™ƒ 2021. 2. 14. 16:31

www.acmicpc.net/problem/1978

 

1978๋ฒˆ: ์†Œ์ˆ˜ ์ฐพ๊ธฐ

์ฒซ ์ค„์— ์ˆ˜์˜ ๊ฐœ์ˆ˜ N์ด ์ฃผ์–ด์ง„๋‹ค. N์€ 100์ดํ•˜์ด๋‹ค. ๋‹ค์Œ์œผ๋กœ N๊ฐœ์˜ ์ˆ˜๊ฐ€ ์ฃผ์–ด์ง€๋Š”๋ฐ ์ˆ˜๋Š” 1,000 ์ดํ•˜์˜ ์ž์—ฐ์ˆ˜์ด๋‹ค.

www.acmicpc.net


๋ฌธ์ œ

์ฃผ์–ด์ง„ ์ˆ˜ N๊ฐœ ์ค‘์—์„œ ์†Œ์ˆ˜๊ฐ€ ๋ช‡ ๊ฐœ์ธ์ง€ ์ฐพ์•„์„œ ์ถœ๋ ฅํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

 

์ž…๋ ฅ

์ฒซ ์ค„์— ์ˆ˜์˜ ๊ฐœ์ˆ˜ N์ด ์ฃผ์–ด์ง„๋‹ค. N์€ 100์ดํ•˜์ด๋‹ค. ๋‹ค์Œ์œผ๋กœ N๊ฐœ์˜ ์ˆ˜๊ฐ€ ์ฃผ์–ด์ง€๋Š”๋ฐ ์ˆ˜๋Š” 1,000 ์ดํ•˜์˜ ์ž์—ฐ์ˆ˜์ด๋‹ค.

 

์ถœ๋ ฅ

์ฃผ์–ด์ง„ ์ˆ˜๋“ค ์ค‘ ์†Œ์ˆ˜์˜ ๊ฐœ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

 

์˜ˆ์ œ ์ž…๋ ฅ 1

4

1 3 5 7

 

์˜ˆ์ œ ์ถœ๋ ฅ 1

3


ํ’€์ด

(1) ์ž…๋ ฅ ๋ฐ›์€ ์ˆซ์ž๋ฅผ ๊ฐ๊ฐ ์†Œ์ˆ˜ ํŒ๋ณ„

  1. n๊ณผ n๊ฐœ์˜ ์ˆซ์ž๋ฅผ list a์— ์ €์žฅ

  2. a๋ฅผ ํ•˜๋‚˜์”ฉ ํŒ๋ณ„

    2-1. a๊ฐ€ 1 ์ด๋ฉด count--

    2-2. a๋ฅผ 2 ~ a-1 ์ˆœ์„œ๋Œ€๋กœ ๋‚˜๋ˆ ์„œ ํ•˜๋‚˜๋ผ๋„ ๋‚˜๋จธ์ง€๊ฐ€ 0์ด๋ฉด count-- ํ›„์— ์ข…๋ฃŒ (์†Œ์ˆ˜๋Š” 1๊ณผ ์ž๊ธฐ ์ž์‹ ์œผ๋กœ๋งŒ ๋‚˜๋ˆ ์ง€๋ฏ€๋กœ)

  3. count ์ถœ๋ ฅ

# 1978-1.py

n = int(input())
a = list(map(int, input().split()))
count = n
for i in a:
    if i == 1:
        count -= 1
        continue
    for j in range(2, i):
        if i % j == 0:
            count -= 1
            break

print(count)

 

(2) 1~1000๊นŒ์ง€์˜ ์ˆ˜๋ฅผ ๋ฏธ๋ฆฌ ์†Œ์ˆ˜ ํŒ๋ณ„ ํ›„ ์ž…๋ ฅ๋ฐ›์•„ ํ™•์ธ

  1. prime ๋ฆฌ์ŠคํŠธ์•ˆ์— ๋ฏธ๋ฆฌ 2, 3์„ ๋„ฃ์–ด๋‘”๋‹ค

  2. 4~1000๊นŒ์ง€์˜ ์ˆซ์ž i๋ฅผ ์†Œ์ˆ˜ ํŒ๋ณ„

    2-1. i๋ฅผ prime์•ˆ์˜ ์ˆซ์ž๋กœ ๋‚˜๋ˆ  ๋ชจ๋‘ 0์ด ์•„๋‹๋•Œ๋งŒ prime ๋ฆฌ์ŠคํŠธ์— ๊ฐ’์„ ์ถ”๊ฐ€ํ•œ๋‹ค

  3. ์ž…๋ ฅ๋ฐ›์€ ์ˆซ์ž๋“ค์ด prime ์•ˆ์— ์žˆ๋Š”์ง€ ํ•˜๋‚˜์”ฉ ํ™•์ธํ•˜์—ฌ count++

  4. count ์ถœ๋ ฅ

# 1978-2.py

n = int(input())
count = 0
prime = [2, 3]

for i in range(4, 1001):
    pp = [i % k for k in prime]
    if all(pp):
        prime.append(i)

for i in list(map(int, input().split())):
    if i in prime:
        count += 1

print(count)