728x90
๋ฐ์ํ
์ข ์ฌ์๋ณด์ด๋ ๋ฌธ์ ๋ฅผ ๊ณจ๋ผ๋ณด์๋ค.
1/4 ํฌ๊ธฐ๋ก ์์ ๊ทธ๋ฆฌ๋ฉด ๊ทธ ์์ k ๋ฐฐ์ ๋จ์๋ก ์ฐ์ ์ ์๋ ์ ์ ๊ฐฏ์๋ฅผ ์ฐพ๋ ๋ฌธ์ . ๊ป์ด๋ค...
๋ฌธ์ ์ค๋ช
์ขํํ๋ฉด์ ์ข์ํ๋ ์ง์๋ x์ถ๊ณผ y์ถ์ด ์ง๊ตํ๋ 2์ฐจ์ ์ขํํ๋ฉด์ ์ ์ ์ฐ์ผ๋ฉด์ ๋๊ณ ์์ต๋๋ค. ์ง์๋ ๋ ์์ ์ ์ k, d๊ฐ ์ฃผ์ด์ง ๋ ๋ค์๊ณผ ๊ฐ์ด ์ ์ ์ฐ์ผ๋ ค ํฉ๋๋ค.
- ์์ (0, 0)์ผ๋ก๋ถํฐ x์ถ ๋ฐฉํฅ์ผ๋ก a*k(a = 0, 1, 2, 3 ...), y์ถ ๋ฐฉํฅ์ผ๋ก b*k(b = 0, 1, 2, 3 ...)๋งํผ ๋จ์ด์ง ์์น์ ์ ์ ์ฐ์ต๋๋ค.
- ์์ ๊ณผ ๊ฑฐ๋ฆฌ๊ฐ d๋ฅผ ๋๋ ์์น์๋ ์ ์ ์ฐ์ง ์์ต๋๋ค.
์๋ฅผ ๋ค์ด, k๊ฐ 2, d๊ฐ 4์ธ ๊ฒฝ์ฐ์๋ (0, 0), (0, 2), (0, 4), (2, 0), (2, 2), (4, 0) ์์น์ ์ ์ ์ฐ์ด ์ด 6๊ฐ์ ์ ์ ์ฐ์ต๋๋ค.
์ ์ k์ ์์ ๊ณผ์ ๊ฑฐ๋ฆฌ๋ฅผ ๋ํ๋ด๋ ์ ์ d๊ฐ ์ฃผ์ด์ก์ ๋, ์ ์ด ์ด ๋ช ๊ฐ ์ฐํ๋์ง return ํ๋ solution ํจ์๋ฅผ ์์ฑํ์ธ์.
์ ํ ์ฌํญ
- 1 ≤ k ≤ 1,000,000
- 1 ≤ d ≤ 1,000,000
์ ์ถ๋ ฅ ์
k | d | result |
2 | 4 | 6 |
1 | 5 | 26 |
์ ์ถ๋ ฅ ์ ์ค๋ช
์ ์ถ๋ ฅ ์ #1
- ๋ณธ๋ฌธ์ ์์์ ๊ฐ์ต๋๋ค.
์ ์ถ๋ ฅ ์ #2
- (0, 0), (0, 1), (0, 2), (0, 3), (0, 4), (0, 5), (1, 0), (1, 1), (1, 2), (1, 3), (1, 4), (2, 0), (2, 1), (2, 2), (2, 3), (2, 4), (3, 0), (3, 1), (3, 2), (3, 3), (3, 4), (4, 0), (4, 1), (4, 2), (4, 3), (5, 0) ์์น์ ์ ์ ์ฐ์ ์ ์์ผ๋ฉฐ, ์ด 26๊ฐ ์ ๋๋ค.
1์ฐจ ์๋
- ์๊ฐ ์ด๊ณผ ใ ใ ใ
- ๊ทธ์น, ์ด๊ฒ ๋ง์ง. ์ด๋ ๊ฒ ์ฌ์ธ๋ฆฌ ์์ง.
from collections import Counter
def solution(k, d):
s = []
a = d // k + 1
q = d ** 2
for i in range(0,a*k,k):
for j in range(i,a*k,k):
t = i**2 + j **2
if t <= q:
s.append((i,j))
ss = []
for i in s:
ss.append((i[1],i[0]))
s = s + ss
c = Counter(s)
return len(c)
์ ํ์ฑ ํ
์คํธ
ํ
์คํธ 1 ใ ํต๊ณผ (0.04ms, 10.1MB)
ํ
์คํธ 2 ใ ํต๊ณผ (0.05ms, 10MB)
ํ
์คํธ 3 ใ ํต๊ณผ (6453.82ms, 1.23GB)
ํ
์คํธ 4 ใ ํต๊ณผ (1848.45ms, 380MB)
ํ
์คํธ 5 ใ ์คํจ (์๊ฐ ์ด๊ณผ)
ํ
์คํธ 6 ใ ์คํจ (์๊ฐ ์ด๊ณผ)
ํ
์คํธ 7 ใ ํต๊ณผ (2221.76ms, 553MB)
ํ
์คํธ 8 ใ ์คํจ (์๊ฐ ์ด๊ณผ)
ํ
์คํธ 9 ใ ์คํจ (์๊ฐ ์ด๊ณผ)
ํ
์คํธ 10 ใ ์คํจ (์๊ฐ ์ด๊ณผ)
ํ
์คํธ 11 ใ ์คํจ (์๊ฐ ์ด๊ณผ)
ํ
์คํธ 12 ใ ํต๊ณผ (0.03ms, 10.2MB)
ํ
์คํธ 13 ใ ์คํจ (์๊ฐ ์ด๊ณผ)
ํ
์คํธ 14 ใ ์คํจ (์๊ฐ ์ด๊ณผ)
ํ
์คํธ 15 ใ ํต๊ณผ (0.05ms, 10.2MB)
ํ
์คํธ 16 ใ ํต๊ณผ (0.02ms, 10.1MB)
- ์ ์ ์ง์ ์ฐ์ผ๋ฉด์ ๊ณ์ฐํ๋ฉด ์๋๊ณ , ์ ์์ ์ฐ์ ์ ์๋ ์ ์ ์ฐพ์์ผ ํ๋ค.
- ์ฝ์ ์ญ์ ๋ ํ์ง๋ง๊ณ ๊ทธ๋ฅ ์นด์ดํธ๋ง ํด์ผํ ๋ฏ?
- ์๋ ์ ํ๋ "Bresenham ์๊ณ ๋ฆฌ์ฆ"์์ ์ ๊ทธ๋ฆฌ๊ธฐ ํ๋ ๊ฑฐ๋ ๋น์ทํ๋ค...
- ๋ธ๋ ์ฆํ ์๊ณ ๋ฆฌ์ฆ์ ์ปดํจํฐ ๊ทธ๋ํฝ์ค์์ ๋ณต์กํ๊ณ ๊ณ์ฐ์ ๋๋ฆฌ๊ฒ ๋ง๋๋ ์ค์ ๊ณ์ฐ์ ๋ฐฐ์ ํ๊ณ ์ ์ ๊ณ์ฐ๋ง์ผ๋ก ์ง์ ์ ๊ทธ๋ฆฌ๊ธฐ ์ํด ๋ง๋ค์ด์ง ์๊ณ ๋ฆฌ์ฆ ์ ๋๋ค. ์ง์ ์ ๊ณต์์ ์ด์ฉํด ๊ณ์ฐ๋ ์ขํ๊ฐ์ ๊ฒฐ๊ตญ ์คํฌ๋ฆฐ์ ํํํ๊ธฐ ์ํด์๋ ์์์ ์ดํ๋ฅผ ๋ฒ๋ฆผํ๋ค๋์ง ๋ฐ์ฌ๋ฆผ ํด์ ์ ์๋ก ๋ง๋ค๊ฒ ๋ฉ๋๋ค.
- ์์ ๊ทธ๋ฆด ๋, ์ํ ์์ง์ผ๋ก ์ ์ ๊ธ๋ ๋ฐฉ์์ด ์์๋๋ฐ ๊ธฐ์ต ์๋จ.
- ๋์ด๋ก ๋์ถฉ ๋๋๋ฉด? ์๋จ ใ ใ
import math
def solution(k, d):
S = math.pi * d ** 2 / 4
box = k**2
answer = S // box
print(S, box, answer)
return answer
- ๋๋... ์ฝ๊ฒ ๋ ๋ฆฌ๊ฐ ์์ง ใ ก.ใ ก;
- ์์ ํ ๋๋ฆฌ๋ง ๊ณ์ฐํ๋ฉด ๋์ง ์๋?
import math
def solution(k, d):
answer = 0
a = d//k + 1
for i in range(a):
x = i * k
y = math.sqrt(d**2 - x**2)
c = y//k
answer += c + 1
#print("x:",x,"y:",y, "c:", c)
return answer
์ ํ์ฑ ํ
์คํธ
ํ
์คํธ 1 ใ ํต๊ณผ (0.01ms, 10.1MB)
ํ
์คํธ 2 ใ ํต๊ณผ (0.01ms, 10.2MB)
ํ
์คํธ 3 ใ ํต๊ณผ (2.23ms, 10.2MB)
ํ
์คํธ 4 ใ ํต๊ณผ (1.22ms, 10.2MB)
ํ
์คํธ 5 ใ ํต๊ณผ (3.61ms, 10.2MB)
ํ
์คํธ 6 ใ ํต๊ณผ (3.10ms, 10.3MB)
ํ
์คํธ 7 ใ ํต๊ณผ (1.34ms, 10.2MB)
ํ
์คํธ 8 ใ ํต๊ณผ (30.01ms, 10.1MB)
ํ
์คํธ 9 ใ ํต๊ณผ (3.45ms, 10MB)
ํ
์คํธ 10 ใ ํต๊ณผ (6.45ms, 10.2MB)
ํ
์คํธ 11 ใ ํต๊ณผ (738.36ms, 10.4MB)
ํ
์คํธ 12 ใ ํต๊ณผ (0.01ms, 10.3MB)
ํ
์คํธ 13 ใ ํต๊ณผ (362.22ms, 9.98MB)
ํ
์คํธ 14 ใ ํต๊ณผ (228.01ms, 10.2MB)
ํ
์คํธ 15 ใ ํต๊ณผ (0.01ms, 10.1MB)
ํ
์คํธ 16 ใ ํต๊ณผ (0.01ms, 10.2MB)
- ๊ณ ์์ ํ์ด๋ฅผ ๋ณด๋, math๋ฅผ ์ํฌํธํ ํ์๊ฐ ์์๊ตฐ์.
- ๋ ์ math๋ฅผ ์ํฌํธํ์ง? ... ์... ์๋ฉด์ ๊ณ์ฐํด์ ๋๋๋ ค๊ณ pi ๋๋ฌธ์ ใ ใ ใ
def solution(k, d):
c = 0
for y in range(0, d, k):
x = (d**2 - y**2)**0.5
c += x//k
return c + d//k + 1
- ์ฝ๋ค? (30๋ถ ๋๊ฒ ๊ฑธ๋ฆผ)
728x90
๋ฐ์ํ
'๊ฒ์ ํ๋ก๊ทธ๋๋ฐ > Python ํ๋ก๊ทธ๋๋ฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ก๊ทธ๋๋จธ์ค ํ ์ด๋ธ ํด์ ํจ์ (0) | 2023.02.15 |
---|---|
ํ๋ก๊ทธ๋๋จธ์ค ๋ํ์ค ๊ฒ์ (0) | 2023.02.15 |
ํ๋ก๊ทธ๋๋จธ์ค ๋จ์ด ํผ์ฆ (0) | 2023.02.14 |
ํ๋ก๊ทธ๋๋จธ์ค ์ธ์ฌ๊ณ ๊ณผ (0) | 2023.02.14 |
ํ๋ก๊ทธ๋๋จธ์ค ์ด๋ชจํฐ์ฝ ํ ์ธํ์ฌ (0) | 2023.02.12 |