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
'🟢 알고리즘 문제 풀이 > Baekjoon' 카테고리의 다른 글
| [파이썬] 백준 2824 최대공약수 (0) | 2023.03.29 |
|---|---|
| [파이썬] 백준 2502 떡 먹는 호랑이 (0) | 2023.03.29 |
| [파이썬] 백준 1309 동물원 (0) | 2023.03.25 |
| [파이썬] 백준 1850 최대공약수 (0) | 2023.03.24 |
| [파이썬] 백준 2302 극장 좌석 (0) | 2023.03.24 |