← Back to List

32626번: SPC에 가는 길 ↗

Solutions

Python 3
1.7 KB | 1470 chars
"""
[32626: SPC에 가는 길](https://www.acmicpc.net/problem/32626)

Tier: Bronze 2 
Category: ad_hoc, case_work
"""


import sys
from math import sqrt, pi, sin, factorial, ceil, floor
from datetime import datetime, timedelta

SYS_INPUT = True
RECURSION_LIMIT = 10 ** 7
SET_RECURSION = False
BLANK = " "

if SET_RECURSION:
  sys.setrecursionlimit(RECURSION_LIMIT)

inp = lambda : sys.stdin.readline().rstrip() if SYS_INPUT else input()
mii = lambda : [*map(int,inp().split())]
mfi = lambda : [*map(float,inp().split())]
ii = lambda : int(inp())
fi = lambda : float(inp())
isplit = lambda : inp().split()
p = print

def gcd(a, b): return gcd(b, a % b) if b > 0 else a
def lcm(a, b): return a * b // gcd(a, b)


def solve():
  start = mii()
  end = mii()
  obstacle = mii()
  
  # 직선으로 이동하는 중에 장애물을 피해 방향 전환하는 최소 횟수
  # 거리는 최소가 아니어도 된다.
  
  # 1. 시작점과 도착점이 같은 경우 -> 0
  if start == end:
    return 0

  
  # 2. 시작점과 도착점이 일직선 상에 있고 장애물이 없는 경우 -> 0
  # 3. 시작점과 도착점이 일직선 상에 있고 장애물이 있는 경우 -> 2
  
  if start[0] == end[0] or start[1] == end[1]:
    if start[0] == end[0] and start[0] == obstacle[0] and min(start[1], end[1]) < obstacle[1] < max(start[1], end[1]):
      return 2
    if start[1] == end[1] and start[1] == obstacle[1] and min(start[0], end[0]) < obstacle[0] < max(start[0], end[0]):
      return 2
    
    return 0

  # 4. 시작점과 도착점이 일직선 상에 있지 않은 경우 -> 1
  return 1


if __name__ == "__main__":
  tc = 1
  for t in range(1, tc+1):
    ret = solve()
    
    print(ret)