๐ค๋ฌธ์ ํด๊ฒฐ
Lv4
๊ตฌ๊ฐ(begin ~ end)์ด ์ ํด์ ธ ์์ผ๋ฏ๋ก ์ ๋ถ๋ฅผ ๊ตฌํ ํ์๋ ์๋ค.
์ ํํ ๊ตฌ๊ฐ๋ง ์๋ผ์ ์ฌ๊ธฐ์ ์ด๋ค ์ซ์๊ฐ ๋ค์ด๊ฐ์ผ ํ ์ง๋ฅผ ์์๋ณด์.
๊ท์น์ ์ ์ดํด๋ณด๋ฉด
I ์ ์ฝ์ ์ค( 1 ์ ์ธ) ๊ฐ์ฅ ์์ ์๋ก ๋๋ ๋ชซ์ด ํด๋น ์ธ๋ฑ์ค์ ๊ฐ์ด ๋๋ค.
- 10์ ๋ณด๋ฉด 2,5,10 ์ค 2๋ก ๋๋๋ฉด ๊ฐ์ 5์ด๋ค.
- 9์ ๊ฒฝ์ฐ 3,9 ์ค 3์ผ๋ก ๋๋๋ฉด ๊ฐ์ 3์ด๋ค.
- 7์ ๊ฒฝ์ฐ ์์์ด๋ฏ๋ก 7๋ก ๋๋๋ฉด ๊ฐ์ 1์ด๋ค.
์์ ๋ฐฉ๋ฒ์ผ๋ก ์ฝ๋๋ฅผ ์ง๋ฉด ์ ํ๋ ํ ์คํธ๋ ์์ฃผ ์ฝ๊ฒ ํต๊ณผํ๋ค.
๐ก์ค์
์ด์ ํจ์จ์ฑ ํ ์คํธ๊ฐ ๋ฌธ์ ์ธ๋ฐ ์๊ฐ์ด๊ณผ๋ ์๋๊ณ ์คํจ ๋ผ๊ณ ํ๋ค.์ด์ ๋ ์ ์ฒด ๋๋ก์ ๊ธธ์ด๋ 10^9 ์ด์ง๋ง ๋ธ๋ก์ ์ซ์๋ 10^7 ๊น์ง์ด๋ค.๋ชซ์ด 10^7์ ๋์ด๊ฐ๊ฒ ๋๋ค๋ฉด ์ฌ์ค์ ํด๋น๋ธ๋ก์ ์กด์ฌํ์ง ์๋๋ค!!๊ทธ๋ฌ๋ฏ๋ก ๋ชซ์ด 10^7์ ๋์ด๊ฐ๋ ์ซ์๋ ์คํตํ๊ณ ๊ทธ ๋ณด๋ค ํฐ ์ซ์๋ก ๋๋ ์ 10^7๋ณด๋ค ์์ ๋ชซ์ ๊ตฌํด์ผ ํ๋ค.
๐ป์์ค ์ฝ๋
import math
def solution(begin, end):
answer = []
for i in range(begin, end + 1):
if i == 1: # i == 1์ธ ๊ฒฝ์ฐ๋ ๋ฌธ์ ์์๋ 0์ผ๋ก ์ฃผ์ด์ง
answer.append(0)
else:
# ์์์ธ์ง ์๋์ง ํ๋ณํ๊ธฐ ์ํด
# ํ๋ณํ๊ธฐ ์ํ ์ซ์ i ์ ์ ๊ณฑ๊ทผ ๊น์ง ํ๋์ฉ ๋๋ ๋ณด๊ณ
# ์์๊ฐ ์๋๋ฉด ๋ชซ์, ์์์ด๋ฉด 1์ ๋ฃ๋๋ค.
sqrt = int(math.sqrt(i))
for j in range(2, sqrt + 1):
mok = i // j
# !!!!์ค์!!!! - ์ ํ์ฑ์์๋ ํต๊ณผํ๋ ํจ์จ์ฑ์์ ํต๊ณผํ์ง ๋ชปํ๋ ์ด์ ๊ฐ ์์
# ์ ์ฒด ๊ธธ์ด๋ 10**9์ด์ง๋ง ๋ธ๋ก์ 10**7 ์ด๋ค
# ๊ทธ๋ฌ๋ฏ๋ก ๋ชซ์ด 10**7์ ๋์ด๊ฐ๋ฉด ์๋จ!!
if mok > 10 ** 7:
continue
if i % j == 0:
answer.append(mok)
break
else:
answer.append(1)
return answer
๐๋ฌธ์ ํ์ธ
์ถ์ฒ: ํ๋ก๊ทธ๋๋จธ์ค
๋งํฌ: https://programmers.co.kr/learn/courses/30/lessons/12923
๋ฌธ์ ์ค๋ช
๊ทธ๋ ์์๋ 0์ผ๋ก ๋ ๋๋ก์ ์ซ์ ๋ธ๋ก์ ์ค์นํ๊ธฐ๋ก ํ์์ต๋๋ค. ์ซ์ ๋ธ๋ก์ ๊ท์น์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๋ธ๋ก์ ๋ฒํธ๊ฐ n ์ผ ๋, ๊ฐ์ฅ ์ฒ์ ๋ธ๋ก์ n * 2๋ฒ์งธ ์์น์ ์ค์นํฉ๋๋ค. ๊ทธ๋ค์์ n * 3, ๊ทธ๋ค์์ n * 4, ...๋ก ์งํํฉ๋๋ค.๋ง์ฝ ๊ธฐ์กด์ ๋ธ๋ก์ด ๊น๋ ค์๋ ์๋ฆฌ๋ผ๋ฉด ๊ทธ ๋ธ๋ก์๋นผ๊ณ ์๋ก์ด ๋ธ๋ก์ผ๋ก ์ง์ด๋ฃ์ต๋๋ค.
์๋ฅผ ๋ค์ด 1๋ฒ ๋ธ๋ก์ 2,3,4,5, ... ์ธ ์์น์ ์ฐ์ ์ค์นํฉ๋๋ค. ๊ทธ๋ค์ 2๋ฒ ๋ธ๋ก์ 4,6,8,10, ... ์ธ ์์น์ ์ค์นํ๊ณ , 3๋ฒ ๋ธ๋ก์ 6,9,12... ์ธ ์์น์ ์ค์นํฉ๋๋ค.
์ด๋ ๊ฒ 3๋ฒ ๋ธ๋ก๊น์ง ์ค์นํ๊ณ ๋๋ฉด ์ฒซ 10๊ฐ์ ๋ธ๋ก์ 0, 1, 1, 2, 1, 3, 1, 2, 3, 2์ด๋ฉ๋๋ค.
๊ทธ๋ ์๋ ๊ธธ์ด๊ฐ 1,000,000,000์ธ ๋๋ก์ 1๋ฒ ๋ธ๋ก๋ถํฐ ์์ํ์ฌ 10,000,000๋ฒ ๋ธ๋ก๊น์ง ์์ ๊ท์น์ผ๋ก ๋ชจ๋ ๋์์ต๋๋ค.
๊ทธ๋ ์์ ์์ฅ๋์ ํน์ ๊ตฌ๊ฐ์ ์ด๋ค ๋ธ๋ก์ด ๊น๋ ค ์๋์ง ์๊ณ ์ถ์ต๋๋ค.
๊ตฌ๊ฐ์ ๋ํ๋ด๋ ๋ ์ begin, end ๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด ์ง ๋, ๊ทธ ๊ตฌ๊ฐ์ ๊น๋ ค ์๋ ๋ธ๋ก์ ์ซ์ ๋ฐฐ์ด(๋ฆฌ์คํธ)์ returnํ๋ solution ํจ์๋ฅผ ์์ฑํด ์ฃผ์ธ์.
์ ํ ์ฌํญ
- begin, end ๋ 1 ์ด์ 1,000,000,000์ดํ์ ์์ฐ์ ์ด๊ณ , begin๋ ํญ์ end๋ณด๋ค ์์ต๋๋ค.
- end - begin ์ ๊ฐ์ ํญ์ 10,000์ ๋์ง ์์ต๋๋ค.
์ ์ถ๋ ฅ ์
begin | end | result |
1 | 10 | [0, 1, 1, 2, 1, 3, 1, 4, 3, 5] |
์ ์ถ๋ ฅ ์ ์ค๋ช
์
์ถ๋ ฅ ์ #1
๋ค์๊ณผ ๊ฐ์ด ๋ธ๋ญ์ด ๊น๋ฆฌ๊ฒ ๋ฉ๋๋ค.
โป ๊ณต์ง - 2019๋ 4์ 07์ผ ํ ์คํธ์ผ์ด์ค๊ฐ ๋ณ๊ฒฝ๋์์ต๋๋ค.
'Algorithm Problem > Python' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[python] ๋ฐฑ์ค - 9658. ๋ ๊ฒ์4 (0) | 2020.09.16 |
---|---|
[python] ํ๋ก๊ทธ๋๋จธ์ค - ์งํ ํธ์ง (2) | 2020.09.16 |
[python] ํ๋ก๊ทธ๋๋จธ์ค - ๋จ์ด ํผ์ฆ(2017 ํ์คํ์ด) (0) | 2020.09.14 |
[python] ํ๋ก๊ทธ๋๋จธ์ค - ์ง๊ฒ๋ค๋ฆฌ (4) | 2020.09.13 |
[python] ํ๋ก๊ทธ๋๋จธ์ค - N-Queen (2) | 2020.09.13 |