๋ฌธ์ ์ค๋ช
ํ๋ก๊ทธ๋๋จธ์ค์ ๋ง์ค์ฝํธ์ธ ๋จธ์ฑ์ด๋ ์ต๊ทผ ์ทจ๋ฏธ๋ก ๋น๊ตฌ๋ฅผ ์น๊ธฐ ์์ํ์ต๋๋ค.
๋จธ์ฑ์ด๋ ์ ๋์ ๋ ๊ฐ๋ฅผ ์ฌ์ฉํด์ผ ํด์ ๋น๊ตฌ๋ฅผ ์ ๋ชป ์นฉ๋๋ค. ํ์ง๋ง ๋๊ธฐ๊ฐ ๊ฐํ ๋จธ์ฑ์ด๋ ์ด์ฌํ ๋ ธ๋ ฅํด์ ๋น๊ตฌ๋ฅผ ์ ์น๋ ค๊ณ ๋น๊ตฌ ํ์์ ๋ค๋๊ณ ์์ต๋๋ค.
์ค๋๋ ๋น๊ตฌ ํ์์ ๋์จ ๋จธ์ฑ์ด์๊ฒ ๋น๊ตฌ ์ ์๋์ด"์์ฟ ์ "(๋น๊ตฌ์์ ๊ณต์ ์ณ์ ๋ฒฝ์ ๋งํ๋ ๊ฑธ ์ฟ ์ ์ด๋ผ๊ณ ๋ถ๋ฅด๊ณ , ๋ฒฝ์ ํ ๋ฒ ๋งํ ํ ๊ณต์ ๋งํ๋ฉด ์์ฟ ์ ์ด๋ผ๊ณ ๋ถ๋ฆ ๋๋ค) ์ฐ์ต์ ํ๋ผ๋ฉด์ ๋น๊ตฌ๊ณต์ ์์น๊ฐ ๋ด๊ธด ๋ฆฌ์คํธ๋ฅผ ๊ฑด๋ค์คฌ์ต๋๋ค. ๋ฆฌ์คํธ์๋ ๋จธ์ฑ์ด๊ฐ ๋ง์ถฐ์ผ ํ๋ ๊ณต๋ค์ ์์น๊ฐ ๋ด๊ฒจ์์ต๋๋ค. ๋จธ์ฑ์ด๋ ๋ฆฌ์คํธ์ ๋ด๊ธด ๊ฐ ์์น์ ์์๋๋ก ๊ณต์ ๋์๊ฐ๋ฉฐ "์์ฟ ์ " ์ฐ์ต์ ํ๋ฉด ๋ฉ๋๋ค. ์ด๋, ๋จธ์ฑ์ด๋ ํญ์ ๊ฐ์ ์์น์ ๊ณต์ ๋๊ณ ์ณ์ ๋ฆฌ์คํธ์ ๋ด๊ธด ์์น์ ๋์ธ ๊ณต์ ๋ง์ถฅ๋๋ค.
๋จธ์ฑ์ด์ ๋ฌ๋ฆฌ ์ต๊ทผ ์ทจ๋ฏธ๋ก ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ๋ฅผ ํ๊ธฐ ์์ํ ๋น์ ์, ๋จธ์ฑ์ด๊ฐ ์น ๊ณต์ด ๊ฐ๊ฐ์ ๋ชฉํ๋กํ ๊ณต์ ๋ง์ ๋๊น์ง ์ต์ ์ผ๋ง์ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตด๋ฌ๊ฐ์ผ ํ๋์ง๊ฐ ๊ถ๊ธํด์ก์ต๋๋ค.
๋น๊ตฌ๋์ ๊ฐ๋ก ๊ธธ์ด m, ์ธ๋ก ๊ธธ์ด n๊ณผ ๋จธ์ฑ์ด๊ฐ ์ณ์ผ ํ๋ ๊ณต์ด ๋์ธ ์์น ์ขํ๋ฅผ ๋ํ๋ด๋ ๋ ์ ์ startX, startY, ๊ทธ๋ฆฌ๊ณ ๋งค ํ๋ง๋ค ๋ชฉํ๋ก ํด์ผํ๋ ๊ณต๋ค์ ์์น ์ขํ๋ฅผ ๋ํ๋ด๋ ์ ์ ์๋ค์ด ๋ค์ด์๋ 2์ฐจ์ ์ ์๋ฐฐ์ด balls๊ฐ ์ฃผ์ด์ง๋๋ค. "์์ฟ ์ " ์ฐ์ต์ ์ํด ๋จธ์ฑ์ด๊ฐ ๊ณต์ ์ ์ด๋ ๋ฒฝ์ ํ ๋ฒ์ ๋ง์ถ ํ ๋ชฉํ ๊ณต์ ๋งํ๋ค๊ณ ํ ๋, ๊ฐ ํ๋ง๋ค ๋จธ์ฑ์ด๊ฐ ์น ๊ณต์ด ๊ตด๋ฌ๊ฐ ๊ฑฐ๋ฆฌ์ ์ต์๊ฐ์ ์ ๊ณฑ์ ๋ฐฐ์ด์ ๋ด์ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด ์ฃผ์ธ์.
๋จ, ๋จธ์ฑ์ด๊ฐ ์น ๊ณต์ด ๋ฒฝ์ ๋ถ๋ชํ ๋ ์งํ ๋ฐฉํฅ์ ํญ์ ์ ์ฌ๊ฐ๊ณผ ๋ฐ์ฌ๊ฐ์ด ๋์ผํ๋ฉฐ, ๋ง์ฝ ๊ผญ์ง์ ์ ๋ถ๋ชํ ๊ฒฝ์ฐ ์ง์ ๋ฐฉํฅ์ ๋ฐ๋๋ฐฉํฅ์ผ๋ก ๊ณต์ด ์งํ๋ฉ๋๋ค. ๊ณต์ ํฌ๊ธฐ๋ ๋ฌด์ํ๋ฉฐ, ๋ ๊ณต์ ์ขํ๊ฐ ์ ํํ ์ผ์นํ๋ ๊ฒฝ์ฐ์๋ง ๋ ๊ณต์ด ์๋ก ๋ง์๋ค๊ณ ํ๋จํฉ๋๋ค. ๊ณต์ด ๋ชฉํ ๊ณต์ ๋ง๊ธฐ ์ ์ ๋ฉ์ถ๋ ๊ฒฝ์ฐ๋ ์์ผ๋ฉฐ, ๋ชฉํ ๊ณต์ ๋ง์ผ๋ฉด ๋ฐ๋ก ๋ฉ์ถ๋ค๊ณ ๊ฐ์ ํฉ๋๋ค.
์ ๊ทธ๋ฆผ์ ์น ๊ณต์ด ๋ฒฝ์ ๋ง์์ ๋์ ์์ง์์ ๋ํ๋ธ ๊ทธ๋ฆผ์ ๋๋ค. ์น๊ธฐ ์ ๊ณต์ ์์น๊ฐ ์ A์ ๋๋ค.
์ ๊ทธ๋ฆผ์ ์น ๊ณต์ด ๊ผญ์ง์ ์ ๋ง์์ ๋์ ์์ง์์ ๋ํ๋ธ ๊ทธ๋ฆผ์ ๋๋ค. ์น๊ธฐ ์ ๊ณต์ ์์น๊ฐ ์ A์ ๋๋ค.
์ ํ ์ฌํญ
- 3 ≤ m, n ≤ 1,000
- 0 < startX < m
- 0 < startY < n
- 2 ≤ balls์ ๊ธธ์ด ≤ 1,000
- balls์ ์์๋ [a, b] ํํ์
๋๋ค.
- a, b๋ ๋จธ์ฑ์ด๊ฐ ๋ง์ถฐ์ผ ํ ๊ณต์ด ๋์ธ ์ขํ๋ฅผ ์๋ฏธํฉ๋๋ค.
- 0 < a < m, 0 < b < n
- (a, b) = ( startX, startY )์ธ ์ ๋ ฅ์ ๋ค์ด์ค์ง ์์ต๋๋ค.
์ ์ถ๋ ฅ ์
m | n | startX | startY | balls | result |
10 | 10 | 3 | 7 | [[7, 7], [2, 7], [7, 3]] | [52, 37, 116] |
์ ์ถ๋ ฅ ์ ์ค๋ช
์ ์ถ๋ ฅ ์ #1
- ์ฒซ ๋ฒ์งธ ์์์ ์ฒซ๋ฒ์งธ ๊ณต์ ๋ํ ๊ทธ๋ฆผ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ๋น๊ตฌ๋์ ์ข์ธก ํ๋จ ์ขํ๊ฐ (0, 0) ์ ๋๋ค.
- ์ A๋ ๋จธ์ฑ์ด๊ฐ ์น ๊ณต์ด ๋์ธ ์์น์ ๋๋ค.
- ์ A → ์ [0] : ์ ์ ์ ๋ฐ๋ผ ์ด๋ํ๋ฉด ๊ฑฐ๋ฆฌ์ ์ ๊ณฑ์ด 52๋ก ์ต์๊ฐ ๋ฉ๋๋ค.
- ๊ฐ์ ์์์ ๋ ๋ฒ์งธ ๊ณต์ ๋ํ ๊ทธ๋ฆผ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ์ A → ์ [1] : ์ ์ ์ ๋ฐ๋ผ ์ด๋ํ๋ฉด ๊ฑฐ๋ฆฌ์ ์ ๊ณฑ์ด 37๋ก ์ต์๊ฐ ๋ฉ๋๋ค.
- ์ A์ ๋์ธ ๊ณต์ ์ผ์ชฝ ๋ฐฉํฅ์ผ๋ก x์ถ๊ณผ ์ํ์ด ๋๋๋ก ๋ณด๋ด๋ฉด ๋ฒฝ์ ๋ง๊ณ ์ [1]์ ๋ฟ์ ์ด๋ ๊ฑฐ๋ฆฌ๊ฐ ๋ ์งง์๋ณด์ด์ง๋ง, A๊ฐ ๋ฒฝ์ผ๋ก ์ด๋ํ๋ ๊ฒฝ๋ก์ ์ [1]์ด ์์ผ๋ฏ๋ก, ๋ฒฝ์ ๋ง๊ธฐ์ ์ ๊ณต์ ๋จผ์ ๋ง๊ฒ ๋ฉ๋๋ค.
- ๊ฐ์ ์์์ ์ธ ๋ฒ์งธ ๊ณต์ ๋ํ ๊ทธ๋ฆผ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ์ A → ์ [2] : ์ ์ ์ ๋ฐ๋ผ ์ด๋ํ๋ฉด ๊ฑฐ๋ฆฌ์ ์ ๊ณฑ์ด 116์ผ๋ก ์ต์๊ฐ ๋ฉ๋๋ค.
- ๋ฐ๋ผ์ [52, 37, 116]์ return ํฉ๋๋ค.
ํ์ด
- ์ด๊ฑด ๊ฒ์ ๋ง๋ค ๋ ์ฃผ๋ก ์ฐ๋ ๋ฐฉ์์ด๋ผ ๋๋ฌด ์ฝ๊ฒ ํ์ด๋ฒ๋ ธ๋ค.
- ์ฝ์ง ํ๋ ๋ถ๋ถ์ x1,x2๋ฅผ <๋ก ํ ๊ฑฐ๋ <= ๋ก ํ ๊ฑฐ์ผ ์ ๋์ ๊ณ
def solution(m, n, startX, startY, balls):
answer = []
# ์คํํธ์ ์ด ์ฌ๋ถ๋ฉด์ ์ด๋์ ์์นํ๋์ง ์ฒดํฌ...ํ ํ์๊ฐ ์๊ณ , ๊ทธ๋ฅ 4๋ฉด์ผ๋ก ๋๋ ค์ ์ ์ผ ๊ฑฐ๋ฆฌ๊ฐ ์งง์ ๊ฑธ ๊ณ ๋ฅด๋ฉด ๋จ
points = []
points.append((-startX,startY))
points.append((2*m-startX,startY))
points.append((startX,-startY))
points.append((startX,2*n-startY))
for b in balls:
x1,y1 = b[0],b[1]
min_distance = m**2 + n**2
for i,p in enumerate(points):
x2,y2 = p[0],p[1]
dx = x2 - x1
dy = y2 - y1
if i == 0 and dy == 0 and abs(x1) <= abs(x2):
continue
elif i == 1 and dy == 0 and abs(m-x1) <= abs(m-x2):
continue
elif i == 2 and dx == 0 and abs(y1) <= abs(y2):
continue
elif i == 3 and dx == 0 and abs(n-y1) <= abs(n-y2):
continue
dx = dx**2
dy = dy**2
dd = (dx+dy)
#print(x1,y1,x2,y2,"->",dx,dy,":",dd,min_distance)
if min_distance > dd:
min_distance = dd
answer.append(min_distance)
return answer
- ๋ฑํ ์ฑ๋ฅ ์ต์ ํ๋ ํจ์จ์ฑ ๊ฒ์ฆ ๊ฐ์ ๊ฑฐ ์ ๊ฒฝ ์ธ ํ์์๋ ๊ฒ ๊ฐ๋ค.
์ ํ์ฑ ํ
์คํธ
ํ
์คํธ 1 ใ ํต๊ณผ (4.37ms, 10.2MB)
ํ
์คํธ 2 ใ ํต๊ณผ (3.12ms, 10.4MB)
ํ
์คํธ 3 ใ ํต๊ณผ (0.34ms, 10.2MB)
ํ
์คํธ 4 ใ ํต๊ณผ (2.45ms, 10.4MB)
ํ
์คํธ 5 ใ ํต๊ณผ (0.41ms, 10.3MB)
ํ
์คํธ 6 ใ ํต๊ณผ (2.32ms, 10.3MB)
ํ
์คํธ 7 ใ ํต๊ณผ (2.92ms, 10.2MB)
ํ
์คํธ 8 ใ ํต๊ณผ (1.03ms, 10.3MB)
ํ
์คํธ 9 ใ ํต๊ณผ (0.95ms, 10.2MB)
ํ
์คํธ 10 ใ ํต๊ณผ (2.06ms, 10.3MB)
ํ
์คํธ 11 ใ ํต๊ณผ (2.76ms, 10.2MB)
ํ
์คํธ 12 ใ ํต๊ณผ (2.80ms, 10.2MB)
ํ
์คํธ 13 ใ ํต๊ณผ (4.66ms, 10.3MB)
ํ
์คํธ 14 ใ ํต๊ณผ (0.21ms, 10.3MB)
ํ
์คํธ 15 ใ ํต๊ณผ (1.50ms, 10.4MB)
ํ
์คํธ 16 ใ ํต๊ณผ (1.35ms, 10.2MB)
ํ
์คํธ 17 ใ ํต๊ณผ (0.83ms, 10.3MB)
ํ
์คํธ 18 ใ ํต๊ณผ (1.32ms, 10.3MB)
ํ
์คํธ 19 ใ ํต๊ณผ (2.56ms, 10.3MB)
ํ
์คํธ 20 ใ ํต๊ณผ (2.05ms, 10.4MB)
ํ
์คํธ 21 ใ ํต๊ณผ (2.05ms, 10.4MB)
ํ
์คํธ 22 ใ ํต๊ณผ (1.76ms, 10.2MB)
ํ
์คํธ 23 ใ ํต๊ณผ (0.68ms, 10.3MB)
ํ
์คํธ 24 ใ ํต๊ณผ (1.85ms, 10.2MB)
ํ
์คํธ 25 ใ ํต๊ณผ (2.32ms, 10.2MB)
ํ
์คํธ 26 ใ ํต๊ณผ (2.49ms, 10.4MB)
ํ
์คํธ 27 ใ ํต๊ณผ (0.44ms, 10.2MB)
ํ
์คํธ 28 ใ ํต๊ณผ (4.89ms, 10.2MB)
ํ
์คํธ 29 ใ ํต๊ณผ (0.02ms, 10.3MB)
ํ
์คํธ 30 ใ ํต๊ณผ (0.02ms, 10.3MB)
ํ
์คํธ 31 ใ ํต๊ณผ (2.41ms, 10.3MB)
ํ
์คํธ 32 ใ ํต๊ณผ (5.51ms, 10.4MB)
ํ
์คํธ 33 ใ ํต๊ณผ (0.52ms, 10.2MB)
ํ
์คํธ 34 ใ ํต๊ณผ (1.49ms, 10.3MB)
ํ
์คํธ 35 ใ ํต๊ณผ (0.44ms, 10.4MB)
ํ
์คํธ 36 ใ ํต๊ณผ (3.45ms, 10.3MB)
- ๊ณ ์์ ํ์ด๋ฅผ ์ดํด๋ณด์...
- ๋น์ทํ๋ค.
'๊ฒ์ ํ๋ก๊ทธ๋๋ฐ > Python ํ๋ก๊ทธ๋๋ฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์์์ ์ฅ ๊ธ... (0) | 2023.05.20 |
---|---|
ํ๋ก๊ทธ๋๋จธ์ค ๊ณต๋ถ ํ๊ธฐ (0) | 2023.03.28 |
ํ๋ก๊ทธ๋๋จธ์ค ํ ๋ณํฉ (2023 KAKAO BLIND RECRUITMENT) (2) | 2023.03.13 |
[PCCP ๋ชจ์๊ณ ์ฌ#2] ๋ณด๋ฌผ ์ง๋ (๊ธธ์ฐพ๊ธฐ) - ๋ฏธ์๋ฃ (0) | 2023.03.12 |
[PCCP ๋ชจ์๊ณ ์ฌ#2] ์นดํ ํ์ฅ (ํ) (0) | 2023.03.11 |