본문 바로가기
알고리즘/[python] 백준 BOJ

[python] 백준 1358 하키

by Alan_Kim 2023. 11. 30.
728x90
반응형

https://www.acmicpc.net/problem/1358

 

1358번: 하키

첫째 줄에 수 W H X Y P가 주어진다. P는 선수의 수이다. W와 H는 100보다 작거나 같은 자연수이고, H는 짝수이다. X와 Y는 절댓값이 100보다 작거나 같은 정수이다. P는 최대 50인 자연수이다. 둘째 줄부

www.acmicpc.net

 

 

문제 해결

  • 하키장을 3개 구간으로 나눌 수 있다. 가장 가운데 직사각형, 왼쪽 반원, 오른쪽 반원
  • 처음에 y좌표를 통해 경기장 안에 들어올 수 없는 사람을 걸러낸다.
  • 그리고 x좌표를 통해 직사각형 안에 있는 사람, 왼쪽 반원에 있는 사람, 오른쪽 반원에 있는 사람을 골라낸다.

 

CODE

import sys
input = sys.stdin.readline

def solve(w,h,x,y,p):
    result = 0
    for _ in range(p):
        r, c = map(int, input().split())
        if c> y+h or c< y: continue # 무조건 하키장 밖에 있는사람
        elif x<= r <=w+x:
            result += 1
        elif r<x:
            dis = (x-r)**2+(y+h/2-c)**2
            if dis<= (h/2)**2:
                result += 1
        elif r> x + w:
            dis = (x+w-r)**2 + (y+h/2-c)**2
            if dis<=(h/2)**2:
                result += 1
    return result

if __name__== '__main__':
    w, h, x, y, p = map(int, input().split())
    answer = solve(w,h,x,y,p)
    print(answer)
728x90
반응형

'알고리즘 > [python] 백준 BOJ' 카테고리의 다른 글

[python] 백준 30823 건공문자열  (3) 2023.12.03
[python] 백준 2234 성곽  (2) 2023.12.03
[python] 백준 7579 앱  (0) 2023.11.26
[python] 백준 11559 Puyo Puyo  (1) 2023.11.23
[python] 백준 1726 로봇  (1) 2023.11.22

댓글