๋‚ด ์ธ์ƒ์—์„œ ๋ฏฟ์„ ๊ฑด ์˜ค์ง ๋‚˜ ์ž์‹ ๋ฟ!

The only one you can truly trust is yourself.

๊ฒŒ์ž„ ํ”„๋กœ๊ทธ๋ž˜๋ฐ/Python ํ”„๋กœ๊ทธ๋ž˜๋ฐ

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต๋ฌธ์ œ ๋‹น๊ตฌ ์—ฐ์Šต

๐ŸŽฎinspirer9 2023. 3. 21. 11:42
728x90
๋ฐ˜์‘ํ˜•

๋ฌธ์ œ ์„ค๋ช…

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๋งˆ์Šค์ฝ”ํŠธ์ธ ๋จธ์“ฑ์ด๋Š” ์ตœ๊ทผ ์ทจ๋ฏธ๋กœ ๋‹น๊ตฌ๋ฅผ ์น˜๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋จธ์“ฑ์ด๋Š” ์† ๋Œ€์‹  ๋‚ ๊ฐœ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ด์„œ ๋‹น๊ตฌ๋ฅผ ์ž˜ ๋ชป ์นฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋ˆ๊ธฐ๊ฐ€ ๊ฐ•ํ•œ ๋จธ์“ฑ์ด๋Š” ์—ด์‹ฌํžˆ ๋…ธ๋ ฅํ•ด์„œ ๋‹น๊ตฌ๋ฅผ ์ž˜ ์น˜๋ ค๊ณ  ๋‹น๊ตฌ ํ•™์›์— ๋‹ค๋‹ˆ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ค๋Š˜๋„ ๋‹น๊ตฌ ํ•™์›์— ๋‚˜์˜จ ๋จธ์“ฑ์ด์—๊ฒŒ ๋‹น๊ตฌ ์„ ์ƒ๋‹˜์ด"์›์ฟ ์…˜"(๋‹น๊ตฌ์—์„œ ๊ณต์„ ์ณ์„œ ๋ฒฝ์— ๋งžํžˆ๋Š” ๊ฑธ ์ฟ ์…˜์ด๋ผ๊ณ  ๋ถ€๋ฅด๊ณ , ๋ฒฝ์— ํ•œ ๋ฒˆ ๋งžํžŒ ํ›„ ๊ณต์— ๋งžํžˆ๋ฉด ์›์ฟ ์…˜์ด๋ผ๊ณ  ๋ถ€๋ฆ…๋‹ˆ๋‹ค) ์—ฐ์Šต์„ ํ•˜๋ผ๋ฉด์„œ ๋‹น๊ตฌ๊ณต์˜ ์œ„์น˜๊ฐ€ ๋‹ด๊ธด ๋ฆฌ์ŠคํŠธ๋ฅผ ๊ฑด๋„ค์คฌ์Šต๋‹ˆ๋‹ค. ๋ฆฌ์ŠคํŠธ์—๋Š” ๋จธ์“ฑ์ด๊ฐ€ ๋งž์ถฐ์•ผ ํ•˜๋Š” ๊ณต๋“ค์˜ ์œ„์น˜๊ฐ€ ๋‹ด๊ฒจ์žˆ์Šต๋‹ˆ๋‹ค. ๋จธ์“ฑ์ด๋Š” ๋ฆฌ์ŠคํŠธ์— ๋‹ด๊ธด ๊ฐ ์œ„์น˜์— ์ˆœ์„œ๋Œ€๋กœ ๊ณต์„ ๋†“์•„๊ฐ€๋ฉฐ "์›์ฟ ์…˜" ์—ฐ์Šต์„ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์ด๋•Œ, ๋จธ์“ฑ์ด๋Š” ํ•ญ์ƒ ๊ฐ™์€ ์œ„์น˜์— ๊ณต์„ ๋†“๊ณ  ์ณ์„œ ๋ฆฌ์ŠคํŠธ์— ๋‹ด๊ธด ์œ„์น˜์— ๋†“์ธ ๊ณต์„ ๋งž์ถฅ๋‹ˆ๋‹ค.

๋จธ์“ฑ์ด์™€ ๋‹ฌ๋ฆฌ ์ตœ๊ทผ ์ทจ๋ฏธ๋กœ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ๋ฅผ ํ’€๊ธฐ ์‹œ์ž‘ํ•œ ๋‹น์‹ ์€, ๋จธ์“ฑ์ด๊ฐ€ ์นœ ๊ณต์ด ๊ฐ๊ฐ์˜ ๋ชฉํ‘œ๋กœํ•œ ๊ณต์— ๋งž์„ ๋•Œ๊นŒ์ง€ ์ตœ์†Œ ์–ผ๋งˆ์˜ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตด๋Ÿฌ๊ฐ€์•ผ ํ•˜๋Š”์ง€๊ฐ€ ๊ถ๊ธˆํ•ด์กŒ์Šต๋‹ˆ๋‹ค.

๋‹น๊ตฌ๋Œ€์˜ ๊ฐ€๋กœ ๊ธธ์ด 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)
  • ๊ณ ์ˆ˜์˜ ํ’€์ด๋ฅผ ์‚ดํŽด๋ณด์ž...
    • ๋น„์Šทํ•˜๋‹ค.
728x90
๋ฐ˜์‘ํ˜•