해결된 질문
작성
·
230
·
수정됨
1
import sys
sys.stdin = open('BackJoon/3강_누적합/5_17611.txt','r')
input = sys.stdin.readline
n = int(input())
vertex = [list(map(int, input().split())) for _ in range(n)]
######## (x_min, y_min) -> (0, 0)으로 이동
x_min, x_max = 500000, -500000
y_min, y_max = 500000, -500000
for x,y in vertex:
x_min = min(x, x_min)
x_max = max(x, x_max)
y_min = min(y, y_min)
y_max = max(y, y_max)
x_diff = 0 - x_min
y_diff = 0 - y_min
for i in range(n):
vertex[i][0] = vertex[i][0] + x_diff
vertex[i][1] = vertex[i][1] + y_diff
##### 수평선 조사 (강의에서와 같이 왼쪽으로 돌려서 봄)
vertex_x_incre = sorted(vertex, key = lambda x: (x[0], x[1])) #
y_range = y_max-y_min+1
x_range = x_max-x_min+1
x_sum_list = [0] * (y_range+1) # x축 방향으로 [1, 0, 0, ..., -1] 더함
for i in range(0,n,2): # 선분은 2개의 꼭지점으로 이루어짐
v1 = vertex_x_incre[i]
v2 = vertex_x_incre[i+1]
if v1[0] != v2[0]: # 디버깅
print('x point does not match!!')#만약 선분이 직선이 아니라면(혹은 sort가 잘못됨)
break
if v1[1] >= v2[1]:
print('y point does not align!!')#sort가 잘못됨
print('v1:', v1)
print('v2:', v2)
break
x_sum_list[v1[1]] += 1
x_sum_list[v2[1]] -= 1
x_sum_list = x_sum_list[:-1] #범위밖의 맨 마지막 -1 자리 버림
prefix = [0]*(y_range+1)
for i in range(y_range):
prefix[i+1] = prefix[i] + x_sum_list[i]
prefix = prefix[1:]
h = max(prefix)
##### y축 방향으로 조사 (수직선 조사)
vertex_y_incre = sorted(vertex, key = lambda x: (-x[1], x[0]))
y_sum_list = [0] * (x_range+1) # y축 방향으로 [1, 0, 0, ..., -1] 더함
for i in range(0,n,2):
v1 = vertex_y_incre[i]
v2 = vertex_y_incre[i+1]
if v1[1] != v2[1]:
print('y point does not match!!')
break
if v1[0] >= v2[0]:
print('x point does not align!!')
print('v1:', v1)
print('v2:', v2)
break
y_sum_list[v1[0]] += 1
y_sum_list[v2[0]] -= 1
y_sum_list = y_sum_list[:-1]
prefix = [0]*(x_range+1)
for i in range(x_range):
prefix[i+1] = prefix[i] + y_sum_list[i]
prefix = prefix[1:]
v= max(prefix)
print(max(h,v))
답변 1
1
일반 글이 작성이 안되서 댓글로 남깁니다!
백준에서 계속 런타임에러가 나는데 혹시 제 코드 어느 부분에 문제가 있는지 질문드립니다!
챗 GPT한테 물어보고 또 GPT가 생성해주는 테스트 케이스도 모두 통과하는데 백준에서 채점만 하면 런타임 에러가 나네요.
혹시 메모리 문제일까요??
오랜 고민끝에 글 남깁니다 알려주시면 감사하겠습니다!!
늦게 답변드려서 죄송합니다!
백준에 넣어보니 인덱스 에러가 나네요? 조금 더 살펴보고 추가 답들 달겠습니다. ( 아마도 범위 설정에서 문제가 있지 않을까 싶네요.. )
아래는 제가 제출한 코드인데 혹시라도 참고가 될까해서 올려둡니다 ㅎㅎ