백준 1004번 바로가기

나의 풀이

# 입력
import sys
read = sys.stdin.readline

eq = read().strip().split('-')
ans = eq[0]
if '+' in ans:
  ans = sum(map(int, ans.split('+')))
else:
  ans = int(ans)

# 처리
for e in eq[1:]:
  if '+' in e:
    e = sum(map(int, e.split('+')))
  ans -= int(e)
print(ans)
  

CODE REVIEW

  1. 한 정점과 원 사이의 거리를 활용한 기하학 문제.
  2. (시작점 - 원의중심 거리) = $l_{1}$ , (도착점 - 원의중심 거리) = $l_{2}$ , 반지름을 $r$ 이라 하면, ( $l_{1}$ - $r^2$ ) * ( $l_{2}$ - $r^2$ ) < 0 일 때 경계를 지나갈 수 밖에 없다.
    • 이유: 중간값 정리
    • ( $l_{1}$ - $r^2$ ) > 0 이면 원 외부에 속함
    • ( $l_{1}$ - $r^2$ ) < 0 이면 원 내부에 속함
  3. cf) 문제 번호가 천사(1004)라니 왠지 멋진걸?!