@@@ 알고리즘/백준 스터디

20206 - 해결

HTG 2021. 8. 5. 11:25
728x90

푸앙이가 길을 건너간 이유 

 

문제

흑석동은 최근 뉴타운 공사로 인하여 지나가면 안되는 위험 지역이 존재한다. 

이 지역은 X축, Y축과 평행한 직사각형 형태로 이루어져 있다.

 

중앙대의 마스코트인 푸앙이는 직선 상의 경로를 따라서 흑석동을 통과하고 있다. 

이 때 흑석동의 망령 호민이는 푸앙이가 위험지역에 지나갈 것 같다는 생각이 들었다. 

따라서 푸앙이가 위험 지역을 지나가는지 여부를 알아내어서 푸앙이가 해당 지역을 지나가지 못하도록 조치를 취할 예정이다.

 

호민이를 위해 푸앙이가 위험 지역을 지나는 지 알려주는 프로그램을 작성해보자.

 

입력

첫째 줄에는 정수 A, B, C (-10,000 ≤ A, B ≤ 10,000, -100,000 ≤ C ≤ 100,000)가 주어진다. 

해당 숫자들은 좌표 평면 상에서 Ax+By+C=0 형태로 표현되는 푸앙이가 지나가는 직선 상의 경로을 나타낸다. 

(단 A, B 모두가 0인 경우는 직선의 방정식이 아니므로 주어지지 않는다.)

 

둘째 줄에는 정수 X1, X2, Y1, Y2 (-100,000 ≤ X1 < X2 ≤ 100,000, -100,000 ≤ Y1 < Y2 ≤ 100,000) 이 주어진다. 

직사각형의 테두리들은 x = X1, x = X2, y = Y1, y = Y2 에 해당하는 직선에 포함된다.

 

출력

첫째 줄에 푸앙이가 위험지역을 통과하면 “Poor”를, 통과하지 않으면 “Lucky”을 출력하라. 

위험 지역의 모서리만 통과하거나, 테두리 위로만 지나가는 경우는 위험지역을 통과하지 않는 것으로 간주한다.


수학적으로 생각해서 풀었는데 왜 안되는거지? 

기울기 구해서 y절편 구해서 하는거 맞는데 왜지?

import sys

A, B, C = map(int,sys.stdin.readline().split())
x1, x2, y1, y2 = map(int,sys.stdin.readline().split())

if A == 0:
    if y1 < -(C/B) < y2:
        print("Poor")
    else:
        print("Lucky")
elif B == 0:
    if x1 < -(C/A) < x2:
        print("Poor")
    else:
        print("Lucky")
elif -(A/B) > 0:
    if y1 + (A/B) * x2 < -(C/B) <  y2 + (A/B) * x1:
        print("Poor")
    else:
        print("Lucky")
else:
    if y1 + (A/B) * x1 < -(C/B) <  y2 + (A/B) * x2:
        print("Poor")
    else:
        print("Lucky")

이해가 안된다....

이항해서 했더니 된다... 왜지? 알아 봐야겠다.

 

import sys

A, B, C = map(float,sys.stdin.readline().split())
x1, x2, y1, y2 = map(float,sys.stdin.readline().split())

if A == 0:
    if y1 < -(C/B) < y2:
        print("Poor")
    else:
        print("Lucky")
elif B == 0:
    if x1 < -(C/A) < x2:
        print("Poor")
    else:
        print("Lucky")
elif -(A/B) > 0:
    if y1 < (-1)*(C+A*x2)/B and (-1)*(C+A*x1)/B <  y2:
        print("Poor")
    else:
        print("Lucky")
else:
    if y1 < (-1)*(C+A*x1)/B and (-1)*(C+A*x2)/B <  y2:
        print("Poor")
    else:
        print("Lucky")

'@@@ 알고리즘 > 백준 스터디' 카테고리의 다른 글

9547 - 해답  (0) 2021.08.08
2468 - 해결  (0) 2021.08.08
1916 - 해답  (0) 2021.08.05
1697 - 해답  (0) 2021.08.04
10844 - 해결  (0) 2021.08.03