한국정보올림피아드 KOI 2019 1차대회 중등부 - 직각다각형
Problem
한국정보올림피아드 KOI 2019 1차대회 중등부 - 직각다각형
한국정보올림피아드 KOI 2019 1차대회 중등부 - 직각다각형
My solution
# n = 4
# data = ["-1 -1","-1 1","1 1","1 -1"]
import collections
n = int(input())
data = []
for _ in range(n):
data.append(input())
data.append(data[0])
num_dict_x = {}
num_dict_y = {}
pre_x, pre_y = data[0].split(' ')
pre_x, pre_y = int(pre_x), int(pre_y)
for k in range(1, len(data)):
x, y = data[k].split(' ')
x, y = int(x), int(y)
if x == pre_x:
start = min(y, pre_y)
end = max(y, pre_y)
if start in num_dict_y.keys():
num_dict_y[start] += 1
else:
num_dict_y[start] = 1
if end in num_dict_y.keys():
num_dict_y[end] -= 1
else:
num_dict_y[end] = -1
if y == pre_y:
start = min(x, pre_x)
end = max(x, pre_x)
if start in num_dict_x.keys():
num_dict_x[start] += 1
else:
num_dict_x[start] = 1
if end in num_dict_x.keys():
num_dict_x[end] -= 1
else:
num_dict_x[end] = -1
pre_x, pre_y = x, y
num_dict_x = sorted(num_dict_x.items(), key=(lambda x:x[0]))
num_dict_y = sorted(num_dict_y.items(), key=(lambda x:x[0]))
max_x = 0
temp_x = 0
for k, v in num_dict_x:
temp_x += v
max_x = max(max_x, temp_x)
max_y = 0
temp_y = 0
for k, v in num_dict_y:
temp_y += v
max_y = max(max_y, temp_y)
print(max(max_x, max_y))
댓글
댓글 쓰기