문제
https://www.acmicpc.net/problem/2527
처음 시도한 풀이(시간 초과)
a를 체크할 때 반복문을 너무 많이 사용하여 시간초과가 발생함.
x1,y1,p1,q1, x2,y2,p2,q2 = map(int,input().split())
board = [[0 for _ in range(10000)] for _ in range(10000)]
def a_check():
area = (p1-x1)*(q1-y1)
for i in range(x1,p1):
for j in range(y1,q1):
board[i][j] = 1
for i in range(x2,p2):
for j in range(y2,q2):
board[i][j] = 2
temp_board = sum(board, [])
if temp_board.count(i) != area:
return True
def b_check():
if (x1<x2 and x2<p1)or(x1<p2 and p2<p1)or(x2<x1 and x1<p2)or(x2<p1 and p1<p2):
return True
elif (y1<y2 and y2<q1)or(y1<q2 and q2<q1)or(y2<y1 and y1<q2)or(y2<q1 and q1<q2):
return True
def c_check():
if(x1==p2 and q1==y2)or(p1==x2 and q1==y2)or(x1==p2 and y1==q2)or(p1==x2 and y1==q2):
return True
for i in range(4):
if a_check() == True:
print('a')
elif b_check() == True:
print('b')
elif c_check() == True:
print('c')
else:
print('d')
풀이
첫번째 사각형과 두번째 사각형이 다음과 같은 위치를 만족할 때 C를 출력하게됨
조건문 4개를 놓고 맨처음에 D를 만족시키는지 확인함
그 다음에 첫번째 사각형의 4곳의 꼭지점에서 두번째 사각형과 만나는지 검사 후 조건에 맞으면 C를 출력
그 다음 조건으로 첫번째 사각형과 두번째 사각형이 X, Y 중 한 변만 꼭지점에서 만나고 다른 변은 꼭지점에서 만나지 않을 때 B를 출력
위의 D, C, B과정을 전부 만족시키지 않으면 A값 출력
import sys
input = sys.stdin.readline
for _ in range(4):
x1,y1,p1,q1,x2,y2,p2,q2 = map(int, input().split())
if p1 < x2 or p2 < x1 or y1 > q2 or q1 < y2:
print('d')
continue
elif x1 == p2 or p1 == x2:
if y1 == q2 or y2 == q1:
print('c')
continue
else:
print('b')
continue
elif y2 == q1 or q2 == y1:
print('b')
continue
else:
print('a')
'Problem Solving > CT-Python' 카테고리의 다른 글
[구름LEVEL1/수학] 태민이의 취미 - 파이썬 (0) | 2022.05.04 |
---|---|
[백준/DFS-BFS] 1260: DFS와 BFS - 파이썬 (0) | 2022.05.04 |
[백준/DP] 16395: 파스칼의 삼각형 = [SWEA] 2005: 파스칼의 삼각형 - 파이썬 (0) | 2022.04.25 |
[백준/브루트포스] 17614: 369 - 파이썬 (0) | 2022.04.25 |
[백준/구현] 2477: 참외밭 - 파이썬 (0) | 2022.04.23 |