본문 바로가기

알고리즘 문제/PS

BOJ2546(경비원)

풀이

- 거리 차이를 구하는 것이기 때문에, 한점을 기준으로 절대 거리를 구해서 빼주면 된다.

 

from sys import stdin

x,y = map(int, stdin.readline().split())
n = int(stdin.readline())

def dist_cal(idx, pos):
    if idx == 1: #북
        return pos
    elif idx == 2: #남
        return x + y + x - pos
    elif idx == 3: #서
        return 2 * (x + y) - pos
    else :
        return x + pos

pos = []
for _ in range(n + 1):
    idx, p = map(int, stdin.readline().split())
    pos.append(dist_cal(idx, p))

my_pos = pos[-1]
deci = (x + y) * 2
res = 0

for i in range(n):
    clockwise = abs(my_pos - pos[i])
    res += min(clockwise, deci - clockwise)
print(res)
반응형

'알고리즘 문제 > PS' 카테고리의 다른 글

BOJ 9019(DSLR)  (0) 2021.10.21
KMP 알고리즘(문자열 비교)  (0) 2021.02.28
BOJ 9205(맥주 마시면서 걸어가기)  (0) 2020.12.23
BOJ 2578  (0) 2020.08.09
BOJ 3055  (0) 2020.08.08