For Programmer
백준 2527번 파이썬 문제풀이(직사각형) 본문
728x90
처음 문제를 풀려고 할때 너어렵게 생각해서 조건을 수없이 많이 분기했다. 그랬더니 코드만 복잡해지고 너무 어려워졌다. 이 문제는 단순히 쉽게 생각하는게 답인거 같다.
1st. 두 직사각형이 만나지 않을 때를 생각한다.
2nd. 두 직사각형이 한점에서 만날 때를 생각한다.
3th. 두 직사각형이 한 변에서 만날 때를 생각한다.
4th. 두 직사각형이 내부 직사각형을 만들 때를 생각한다.
위와 같은 순서로 조건을 짠다면 모든 예외를 막을 수 있다.
def solution(left_square, right_square):
x1, y1, x2, y2 = left_square[0], left_square[1], left_square[2], left_square[3]
p1, q1, p2, q2 = right_square[0], right_square[1], right_square[2], right_square[3]
# 공통부분 없음
if (x2 < p1) or (p2 < x1) or (q1 > y2) or (y1 > q2):
return "d"
# 점 1개에서 만날 때
if (x2 == p1 and y2 == q1) or (x2 == p1 and y1 == q2) or (x1 == p2 and y1 == q2) or (x1 == p2 and y2 == q1):
return "c"
# 변이 만날 때
if p1 == x2 or x1 == p2 or y1 == q2 or y2 == q1:
return "b"
# 나머지 직사각형(겹칠때)
return "a"
for _ in range(4):
temp = list(map(int, input().split()))
left_square = [temp[i] for i in range(4)] # 왼쪽 직사각형
right_square = [temp[i] for i in range(4, 8)] # 오른쪽 직사각형
print(solution(left_square, right_square))
728x90
'코팅테스트 > 백준 문제 모음' 카테고리의 다른 글
백준 10158번 파이썬 문제풀이(개미) (0) | 2022.01.31 |
---|---|
백준 10157번 파이썬 문제풀이(자리배정) (0) | 2022.01.31 |
백준 2477번 파이썬 문제풀이(참외밭) (0) | 2022.01.28 |
백준 2578번 파이썬 문제풀이(빙고) (0) | 2022.01.28 |
백준 2559번 파이썬 문제풀이(수열) (0) | 2022.01.28 |
Comments