한국정보올림피아드 KOI 2019 1차대회 중등부 - 직각다각형

Problem

한국정보올림피아드 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))

댓글