본문 바로가기
Algorithm

[구현/수학] 백준 29197 아침 태권도 - 파이썬(Python)

by jangThang 2023. 8. 21.
반응형

백준 온라인 저지

 

[ Contents ]

     

     

    1. 문제 (링크 참조)

     

    29197번: 아침 태권도

    KSA의 1학년 학생들은 매일 아침 졸업을 하기 위해 아침 태권도를 해야 한다. 태권도장은 2차원 좌표평면으로 표현할 수 있고, 이때 사범님은 원점에 앉아있다. $N$명의 1학년 학생들은 $1$번부터 $N

    www.acmicpc.net

     

     

    2. 문제 풀이

     일직선 위에 놓이지 않은 좌표의 개수를 찾는 문제입니다.

     

     

    반응형

     

    3. 코드

    import sys
    input = sys.stdin.readline
    
    # 입력
    N = int(input())
    
    quad1 = set()
    quad2 = set()
    quad3 = set()
    quad4 = set()
    axis = set()
    
    for _ in range(N):
        x, y = map(int, input().split())
        if x > 0 and y > 0:
            quad1.add(y/x)
        elif x < 0 and y > 0:
            quad2.add(y/x)
        elif x < 0 and y < 0:
            quad3.add(y/x)
        elif x > 0 and y < 0:
            quad4.add(y/x)
            
        elif x == 0 and y > 0:
            axis.add('y')
        elif x == 0 and y < 0:
            axis.add('-y')
        elif y == 0 and x > 0:
            axis.add('x')
        elif y == 0 and x < 0:
            axis.add('-x')
    
    res = len(quad1) + len(quad2) + len(quad3) + len(quad4) + len(axis)
    print(res)

     

     원점과 좌표와의 기울기가 같으면 일직선 위에 놓인 좌표입니다. (기울기 = y/x)

     다만 기울기가 같더라도 사분면이 다를 수는 있습니다. 따라서 각 사분면과 축을 기준으로 나누어서 구해줍니다.

     

    star가 되고나서 Tistory

    반응형

    댓글