๐ŸŒžAlgorithm/๐Ÿ”ฅBaekjoon

[Baekjoon] 2564_๊ฒฝ๋น„์›

๋ฟŒ์•ผ._. 2022. 6. 10. 14:10

Silver I

๋ฌธ์ œ(์ถœ์ฒ˜: https://www.acmicpc.net/problem/2564)

<๊ฒฝ๋น„์›>

๋ฌธ์ œ 

 

๋™๊ทผ์ด๋Š” ๋ฌด์ธ ๊ฒฝ๋น„ ํšŒ์‚ฌ ๊ฒฝ๋น„์›์œผ๋กœ ํ•ญ์ƒ ๋Œ€๊ธฐํ•˜๊ณ  ์žˆ๋‹ค๊ฐ€ ํ˜ธ์ถœ์ด ๋“ค์–ด์˜ค๋ฉด ๊ฒฝ๋น„ ์ฐจ๋ฅผ ๋ชฐ๊ณ  ๊ทธ๊ณณ์œผ๋กœ ๋‹ฌ๋ ค๊ฐ€์•ผ ํ•œ๋‹ค. ๋™๊ทผ์ด๊ฐ€ ๋‹ด๋‹นํ•˜๊ณ  ์žˆ๋Š” ๊ณณ์€ ์ง์‚ฌ๊ฐํ˜• ๋ชจ์–‘์˜ ๋ธ”๋ก์œผ๋กœ ๋ธ”๋ก ์ค‘๊ฐ„์„ ๊ฐ€๋กœ์งˆ๋Ÿฌ ์ฐจ๊ฐ€ ํ†ต๊ณผํ• ๋งŒํ•œ ๊ธธ์ด ์—†๋‹ค. ์ด ๋ธ”๋ก ๊ฒฝ๊ณ„์— ๋ฌด์ธ ๊ฒฝ๋น„๋ฅผ ์˜๋ขฐํ•œ ์ƒ์ ๋“ค์ด ์žˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ๊ฐ€๋กœ์˜ ๊ธธ์ด๊ฐ€ 10, ์„ธ๋กœ์˜ ๊ธธ์ด๊ฐ€ 5์ธ ๋ธ”๋ก์˜ ๊ฒฝ๊ณ„์— ๋ฌด์ธ ๊ฒฝ๋น„๋ฅผ ์˜๋ขฐํ•œ 3๊ฐœ์˜ ์ƒ์ ์ด ์žˆ๋‹ค๊ณ  ํ•˜์ž. <๊ทธ๋ฆผ 1>๊ณผ ๊ฐ™์ด ์ด๋“ค์€ 1, 2, 3์œผ๋กœ ํ‘œ์‹œ๋˜์–ด ์žˆ๊ณ , ๋™๊ทผ์ด๋Š” X๋กœ ํ‘œ์‹œํ•œ ์œ„์น˜์— ์žˆ๋‹ค.

< ๊ทธ๋ฆผ 1 >

1๋ฒˆ ์ƒ์ ์—์„œ ํ˜ธ์ถœ์ด ๋“ค์–ด์™”์„ ๋•Œ ๋™๊ทผ์ด๊ฐ€ ๋ธ”๋ก์„ ์‹œ๊ณ„๋ฐฉํ–ฅ์œผ๋กœ ๋Œ์•„ ์ด๋™ํ•˜๋ฉด ์ด๋™ ๊ฑฐ๋ฆฌ๊ฐ€ 12๊ฐ€ ๋œ๋‹ค. ๋ฐ˜๋ฉด ๋ฐ˜์‹œ๊ณ„ ๋ฐฉํ–ฅ์œผ๋กœ ๋Œ์•„ ์ด๋™ํ•˜๋ฉด ์ด๋™ ๊ฑฐ๋ฆฌ๋Š” 18์ด ๋œ๋‹ค. ๋”ฐ๋ผ์„œ ๋™๊ทผ์ด๊ฐ€ 1๋ฒˆ ์ƒ์ ์œผ๋กœ ๊ฐ€๋Š” ์ตœ๋‹จ ๊ฑฐ๋ฆฌ๋Š” 12๊ฐ€ ๋œ๋‹ค. ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋™๊ทผ์ด์˜ ์œ„์น˜์—์„œ 2๋ฒˆ ์ƒ์ ๊นŒ์ง€์˜ ์ตœ๋‹จ ๊ฑฐ๋ฆฌ๋Š” 6, 3๋ฒˆ ์ƒ์ ๊นŒ์ง€์˜ ์ตœ๋‹จ ๊ฑฐ๋ฆฌ๋Š” 5๊ฐ€ ๋œ๋‹ค.

๋ธ”๋ก์˜ ํฌ๊ธฐ์™€ ์ƒ์ ์˜ ๊ฐœ์ˆ˜ ๋ฐ ์œ„์น˜ ๊ทธ๋ฆฌ๊ณ  ๋™๊ทผ์ด์˜ ์œ„์น˜๊ฐ€ ์ฃผ์–ด์งˆ ๋•Œ ๋™๊ทผ์ด์˜ ์œ„์น˜์™€ ๊ฐ ์ƒ์  ์‚ฌ์ด์˜ ์ตœ๋‹จ ๊ฑฐ๋ฆฌ์˜ ํ•ฉ์„ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

 

 

์ž…๋ ฅ

 

์ฒซ์งธ ์ค„์— ๋ธ”๋ก์˜ ๊ฐ€๋กœ์˜ ๊ธธ์ด์™€ ์„ธ๋กœ์˜ ๊ธธ์ด๊ฐ€ ์ฐจ๋ก€๋กœ ์ฃผ์–ด์ง„๋‹ค. ๋‘˜์งธ ์ค„์— ์ƒ์ ์˜ ๊ฐœ์ˆ˜๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๋ธ”๋ก์˜ ๊ฐ€๋กœ์˜ ๊ธธ์ด์™€ ์„ธ๋กœ์˜ ๊ธธ์ด, ์ƒ์ ์˜ ๊ฐœ์ˆ˜๋Š” ๋ชจ๋‘ 100 ์ดํ•˜์˜ ์ž์—ฐ์ˆ˜์ด๋‹ค. ์ด์–ด ํ•œ ์ค„์— ํ•˜๋‚˜์”ฉ ์ƒ์ ์˜ ์œ„์น˜๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ์ƒ์ ์˜ ์œ„์น˜๋Š” ๋‘ ๊ฐœ์˜ ์ž์—ฐ์ˆ˜๋กœ ํ‘œ์‹œ๋œ๋‹ค. ์ฒซ์งธ ์ˆ˜๋Š” ์ƒ์ ์ด ์œ„์น˜ํ•œ ๋ฐฉํ–ฅ์„ ๋‚˜ํƒ€๋‚ด๋Š”๋ฐ, 1์€ ๋ธ”๋ก์˜ ๋ถ์ชฝ, 2๋Š” ๋ธ”๋ก์˜ ๋‚จ์ชฝ, 3์€ ๋ธ”๋ก์˜ ์„œ์ชฝ, 4๋Š” ๋ธ”๋ก์˜ ๋™์ชฝ์— ์ƒ์ ์ด ์žˆ์Œ์„ ์˜๋ฏธํ•œ๋‹ค. ๋‘˜์งธ ์ˆ˜๋Š” ์ƒ์ ์ด ๋ธ”๋ก์˜ ๋ถ์ชฝ ๋˜๋Š” ๋‚จ์ชฝ์— ์œ„์น˜ํ•œ ๊ฒฝ์šฐ ๋ธ”๋ก์˜ ์™ผ์ชฝ ๊ฒฝ๊ณ„๋กœ๋ถ€ํ„ฐ์˜ ๊ฑฐ๋ฆฌ๋ฅผ ๋‚˜ํƒ€๋‚ด๊ณ , ์ƒ์ ์ด ๋ธ”๋ก์˜ ๋™์ชฝ ๋˜๋Š” ์„œ์ชฝ์— ์œ„์น˜ํ•œ ๊ฒฝ์šฐ ๋ธ”๋ก์˜ ์œ„์ชฝ ๊ฒฝ๊ณ„๋กœ๋ถ€ํ„ฐ์˜ ๊ฑฐ๋ฆฌ๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค. ๋งˆ์ง€๋ง‰ ์ค„์—๋Š” ๋™๊ทผ์ด์˜ ์œ„์น˜๊ฐ€ ์ƒ์ ์˜ ์œ„์น˜์™€ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ์ฃผ์–ด์ง„๋‹ค. ์ƒ์ ์˜ ์œ„์น˜๋‚˜ ๋™๊ทผ์ด์˜ ์œ„์น˜๋Š” ๋ธ”๋ก์˜ ๊ผญ์ง“์ ์ด ๋  ์ˆ˜ ์—†๋‹ค.

 

 

์ถœ๋ ฅ 

 

์ฒซ์งธ ์ค„์— ๋™๊ทผ์ด์˜ ์œ„์น˜์™€ ๊ฐ ์ƒ์  ์‚ฌ์ด์˜ ์ตœ๋‹จ ๊ฑฐ๋ฆฌ์˜ ํ•ฉ์„ ์ถœ๋ ฅํ•œ๋‹ค.

 

 

๋ฌธ์ œ ํ’€์ด

   - my solution (Python)

 

import sys

def main():
    m,n=map(int,sys.stdin.readline().split())

    k=int(input())
    arr=[]

    for i in range(k+1):
        a,d=map(int,sys.stdin.readline().split())
        if a==1: # ๋ถ
            arr.append([0,d])
        elif a==2: # ๋‚จ
            arr.append([n, d])
        elif a==3: # ์„œ
            arr.append([d, 0])
        else: # ๋™
            arr.append([d, m])

    answer=0
    val=arr[-1]
    for i in range(k):
        if arr[i][0]!=val[0] :
            temp = val[0] - arr[i][0]
            if temp < 0:
                temp = -temp
            if arr[i][1]+val[1]<m-arr[i][1]+m-val[1]:
                temp+=(arr[i][1]+val[1])
            else:
                temp+=m-arr[i][1]+m-val[1]
        else:
            if arr[i][1]-val[1]==m or val[1]-arr[i][1]==m: # ๋™, ์„œ
                temp = m
                if arr[i][0] + val[0] < n - arr[i][0] + n - val[0]:
                    temp += (arr[i][0] + val[0])
                else:
                    temp += n - arr[i][0] + n - val[0]
            else: # ๊ฐ™์€ ์ค„
                temp=arr[i][1]-val[1]
                if temp<0:
                    temp=-temp
        answer+=temp
    print(answer)

if __name__=='__main__':
    main()

 

 

  • ๊ฐ€๋กœ m, ์„ธ๋กœ n ์ž…๋ ฅ
  • ์ƒ์ ์˜ ๊ฐœ์ˆ˜ k ์ž…๋ ฅ
  • k+1๊ฐœ๋งŒํผ ์ƒ์ ๊ณผ ๋™๊ทผ์ด์˜ ์œ„์น˜ ์ž…๋ ฅ
    ์ฒซ์งธ ์ˆ˜ a๊ฐ€ 1์ด๋ฉด ๋ถ์ชฝ -> x์ขŒํ‘œ 0, y์ขŒํ‘œ d
    2์ด๋ฉด ๋‚จ์ชฝ -> x์ขŒํ‘œ n, y์ขŒํ‘œ d
    3์ด๋ฉด ์„œ์ชฝ -> x์ขŒํ‘œ d, y์ขŒํ‘œ 0
    4์ด๋ฉด ๋™์ชฝ -> x์ขŒํ‘œ d, y์ขŒํ‘œ m
  • ์ตœ๋‹จ ๊ฑฐ๋ฆฌ์˜ ํ•ฉ answer ์„ ์–ธ
  • arr์˜ ๋งˆ์ง€๋ง‰ ๊ฐ’์€ ๋™๊ทผ์ด์˜ ์ขŒํ‘œ ์ด๋ฏ€๋กœ val์— ๋”ฐ๋กœ ์ €์žฅ
  • arr์„ ์ˆœํ™˜ํ•˜๋ฉฐ
    if x์ขŒํ‘œ๊ฐ€ ๊ฐ™์ง€ ์•Š์œผ๋ฉด ์„ธ๋กœ ๊ธธ์ด๋ฅผ ๊ตฌํ•ด์คŒ -> ์‹œ๊ณ„๋ฐฉํ–ฅ ๋˜๋Š” ๋ฐ˜์‹œ๊ณ„ ๋ฐฉํ–ฅ์œผ๋กœ ๊ฐˆ ๋•Œ ๊ฐ€๋กœ๊ธธ์ด๋ฅผ ๊ตฌํ•˜์—ฌ ๋” ์ž‘์€ ๊ฐ’์„ ํƒํ•˜์—ฌ ๋”ํ•ด์คŒ
    if x์ขŒํ‘œ๊ฐ€ ๊ฐ™์œผ๋ฉด -> ๊ทธ์ค‘์—์„œ y์ขŒํ‘œ๋ผ๋ฆฌ์˜ ๊ฑฐ๋ฆฌ๊ฐ€ ๊ฐ€๋กœ๊ธธ์ด์ด๋ฉด ๋™๊ณผ ์„œ์— ์œ„์น˜ํ•œ๋‹ค๋Š” ๋œป์ด๋ฏ€๋กœ ๊ฐ€๋กœ๊ธธ์ด๋ฅผ ๋”ํ•ด์ฃผ์–ด์•ผ ํ•˜๋ฉฐ, ์œ„์™€ ๋˜‘๊ฐ™์ด ์‹œ๊ณ„๋ฐฉํ–ฅ ๋˜๋Š” ๋ฐ˜์‹œ๊ณ„ ๋ฐฉํ–ฅ์œผ๋กœ ๊ฐˆ ๋•Œ ์„ธ๋กœ ๊ธธ์ด๋ฅผ ๊ตฌํ•˜์—ฌ ๋” ์ž‘์€ ๊ฐ’์„ ํƒํ•˜์—ฌ ๋”ํ•ด์คŒ
     but y์ขŒํ‘œ๋ผ๋ฆฌ์˜ ๊ฑฐ๋ฆฌ๊ฐ€ ๊ฐ€๋กœ๊ธธ์ด๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด ๊ฐ™์€ ๋ผ์ธ์— ์œ„์น˜ํ•œ๋‹ค๋Š” ๋œป์ด๋ฏ€๋กœ ๊ทธ๋ƒฅ ๊ฐ€๋กœ๊ธธ์ด๋งŒ ๊ตฌํ•ด์คŒ
    = ์œ„์—์„œ ๊ตฌํ•œ ๊ฐ’์„ answer์— ๋”ํ•ด์คŒ
  • answer ์ถœ๋ ฅ

 

โ“ ์™œ ํ‹€๋ ธ๋Š”๊ฐ€?

x์ขŒํ‘œ๊ฐ€ ๊ฐ™์„ ๋•Œ, ๋™๊ณผ ์„œ์— ์œ„์น˜ํ•œ ๊ฒฝ์šฐ๋ฅผ ๊ณ ๋ คํ•˜์ง€ ๋ชปํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ด์—ˆ๋‹ค.

 


์ƒ๊ฐ๐Ÿค”

.