728x90

아이디어 자체는 어려운 문제가 아니었는데 구현하는게 빡셌다. 문제를 잘못 읽어서 y축의 값을 반대로 해주어서 헤맸지만 꾸역꾸역 구현했다.

import sys
import math
 
x,y = map(int,input().split(" "))
n = int(input())
 
k = [ ]
 
dong = [ ]
 
answer = [ ]
 
 
for i in range(0,n+1):
    a,b = map(int,input().split(" "))
 
    # a는 위치 b는 거리
 
    # 1이면 (b,y)
 
    if a == 1:
        if i ==n:
            dong.append([b,y])
        else:
            k.append([b,y])
 
    # 2이면 (b,0)
    if a == 2:
        if i ==n:
            dong.append([b,0])
        else:
            k.append([b,0])
 
 
    # 3이면 (0,b)
    if a == 3:
        if i ==n:
            dong.append([0,y-b])
        else:
            k.append([0,y-b])
 
    # 4이면 (x,b)
    if a == 4:
        if i ==n:
            dong.append([x,y-b])
 
        else:    
            k.append([x,y-b])
 
 
for i in range(0,len(k)):
 
    dx = k[i][0]
    dy = k[i][1]
 
    dong_x = dong[0][0]
    dong_y = dong[0][1]
 
# dong 과 k 가 마주보는 경우
 
    if (dong_x==0 and dx==x) or (dong_x==x and dx==0):
 
        first = dong_y+dy+x
        second = x+(y-dong_y)+(y-dy)
        answer.append(int(min(first,second)))
 
    elif (dong_y==0 and dy==y) or (dong_y==y and dy==0):
 
        first = dong_x+dx+y
        second = y+(x-dong_x)+(x-dx)
        answer.append(int(min(first,second)))
 
 
 
# 붙어있는 경우
    else:
        answer.append(int(math.fabs(dong_x-dx)+math.fabs(dong_y-dy)))
 
 
print(sum(answer))
 
728x90

+ Recent posts