[BOJ][๐ŸŸก1][๋ฐฑ์ค€#01016] ์ œ๊ณฑ ใ„ดใ„ด ์ˆ˜

์ž‘์„ฑ:    

์—…๋ฐ์ดํŠธ:

์นดํ…Œ๊ณ ๋ฆฌ:

ํƒœ๊ทธ: , , ,

๋ฌธ์ œ ์ถœ์ฒ˜

BAEKJOON Online Judge #1016


๋ฌธ์ œ

์–ด๋–ค ์ •์ˆ˜ X๊ฐ€ 1๋ณด๋‹ค ํฐ ์ œ๊ณฑ์ˆ˜๋กœ ๋‚˜๋ˆ„์–ด ๋–จ์–ด์ง€์ง€ ์•Š์„ ๋•Œ, ๊ทธ ์ˆ˜๋ฅผ ์ œ๊ณฑใ„ดใ„ด์ˆ˜๋ผ๊ณ  ํ•œ๋‹ค. ์ œ๊ณฑ์ˆ˜๋Š” ์ •์ˆ˜์˜ ์ œ๊ณฑ์ด๋‹ค. min๊ณผ max๊ฐ€ ์ฃผ์–ด์ง€๋ฉด, min๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™๊ณ , max๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ œ๊ณฑใ„ดใ„ด์ˆ˜๊ฐ€ ๋ช‡ ๊ฐœ ์žˆ๋Š”์ง€ ์ถœ๋ ฅํ•œ๋‹ค.


์ž…๋ ฅ

์ฒซ์งธ ์ค„์— ๋‘ ์ •์ˆ˜ min๊ณผ max๊ฐ€ ์ฃผ์–ด์ง„๋‹ค.


์ถœ๋ ฅ

์ฒซ์งธ ์ค„์— min๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™๊ณ , max๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ œ๊ณฑใ„ดใ„ด์ˆ˜์˜ ๊ฐœ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.


์ œํ•œ

1 โ‰ค min โ‰ค 1,000,000,000,000 min โ‰ค max โ‰ค min + 1,000,000


์˜ˆ์ œ

์˜ˆ์ œ 1

์ž…๋ ฅ

1 10


์ถœ๋ ฅ

7


์˜ˆ์ œ 2

์ž…๋ ฅ

15 15


์ถœ๋ ฅ

1


์˜ˆ์ œ 3

์ž…๋ ฅ

1 1000


์ถœ๋ ฅ

608


My Sol

mn, mx = map(int, input().split())
check = [1]*(mx-mn+1)

sqr_n = 2
while sqr_n**2 <= mx:
    sqr_nn = sqr_n**2
    k = (mx//sqr_nn)*sqr_nn
    while k >=mn:
        check[k-mn] = 0
        k -= sqr_nn
    sqr_n += 1

print(sum(check))
  1. ์—๋ผํ† ์Šคํ…Œ๋„ค์˜ ์ฒด๋ฅผ ์ ์šฉํ•˜๊ธฐ ์œ„ํ•ด ์ œ๊ณฑ ใ„ดใ„ด ์ˆ˜๋ฅผ 0์œผ๋กœ ์ฒดํฌํ•  ๋ฐฐ์—ด check ๋ฅผ ๋งŒ๋“ ๋‹ค.
  2. ์ œ๊ณฑ์ˆ˜์˜ ์‹œ์ž‘์„ 2์˜ ์ œ๊ณฑ๋ถ€ํ„ฐ ํ•˜์—ฌ 1์”ฉ ๋Š˜๋ ค๊ฐ€๋ฉฐ ์ œ๊ณฑ์ˆ˜๋กœ ๋‚˜๋ˆ„์–ด ๋–จ์–ด์ง€๋Š” ์ˆ˜๋“ค์„ 0์œผ๋กœ ์ฒดํฌํ•ด์ค€๋‹ค.
  3. ์ด ๋ฐ˜๋ณต์€ ์ œ๊ณฑ์ˆ˜์˜ ๊ฐ’์ด mx๋ฅผ ๋„˜์–ด์„œ๋Š” ์ˆœ๊ฐ„๊นŒ์ง€ ์ง„ํ–‰ํ•œ๋‹ค.
  4. ์ตœ๋Œ“๊ฐ’(mx)์„ ์ œ๊ณฑ์ˆ˜(sqr_nn)๋กœ ๋‚˜๋ˆˆ ๋ชซ์„ ์ œ๊ณฑ์ˆ˜๋กœ ๋‹ค์‹œ ๊ณฑํ•œ๋‹ค. ์ด๋Š” mx๋ฅผ ๋„˜์ง€ ์•Š๋Š” ๊ฐ€์žฅ ํฐ ์ œ๊ณฑใ…‡ใ…‡์ˆ˜ ์ด๋‹ค. ์ด ์ˆ˜๋ถ€ํ„ฐ ์ œ๊ณฑ์ˆ˜ sqr_nn๊ฐ„๊ฒฉ์œผ๋กœ k๋ฅผ ๋‚ฎ์ถฐ์ค€๋‹ค.
  5. ์ด ๋ฐ˜๋ณต์€ k๊ฐ€ mn ๋ฏธ๋งŒ์œผ๋กœ ๋–จ์–ด์งˆ ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณตํ•œ๋‹ค.
  6. ์ด๋ ‡๊ฒŒ check ๋ฐฐ์—ด์„ ์—๋ผํ† ์Šคํ…Œ๋„ค์Šค์˜ ์ฒด ๊ฐœ๋…์œผ๋กœ ๊ฑธ๋Ÿฌ๋‚ด์ฃผ๋ฉด, check์—๋Š” ์ œ๊ณฑ ใ„ดใ„ด ์ˆ˜๋งŒ 1๋กœ ์ฒดํฌ๊ฐ€ ๋œ๋‹ค.
  7. ์ด๋ฅผ ๋ชจ๋‘ ๋”ํ•œ ๊ฐ’์„ ์ถœ๋ ฅํ•œ๋‹ค.


๊ฒฐ๊ณผ

๋งž์•˜์Šต๋‹ˆ๋‹ค!!

๋Œ“๊ธ€๋‚จ๊ธฐ๊ธฐ