이것만 봐서는 어떤 상황인지를 잘 모르겠는데..
지역변수로 선언하니 맞았구요. 전역변수로 선언하니까 시간 초과가 났다. 라는 내용이 있는 걸로 봐서는..
정사각형 check하는 코드가 있는데.
k를 초기화를 안 해줘서, 범위를 벗어나는 곳에 접근했고. 그렇게 되어서 시간초과가 되지 않았나 싶네요.
차라리 스포를 원하시지 않으시면..
핵심 알고리즘을 생략하고.
(1) 배열에 넣는 것.
(2) k값이 변하는 것만 보여주셔도 될 거 같은데.
답변에 필요한 핵심적인 부분이 없어서 무엇이 원인인지 설명드리기가 힘드네요.
kimsy96 5년 전
일단 이문제를 맞혀버려서 소스코드를 다 올리는 건 좀 아니라고 생각해서 소스코드의 부분만 올립니다. 혹시 질문에 답변해주시는 분이 계시다면, 그리고 그분이 풀코드를 보지않고는 모르겠다고 하시면 그 때 올리겠습니다.
x와 y좌표를 각각 입력받고 그걸 배열에 저장해서 크기별로 정렬한다음 앞에 4개가 같고 뒤에 2개가 같은지(앞에 4개의 값은 각변의 길이, 뒤의 2개의 길이는 대각선의 길이)를 확인하는 형식으로 알고리즘을짰습니다.
처음에 이런식으로 풀고 제출을하니 시간초과가 나더라고요, 복잡도를 대충계산해봐도 아닌거 같아서 보니 저 밑에 부분의 k를 전역적으로 선언했을 때 시간초과 오류가 났었습니다. 지역변수로 선언하니 맞았구요.(저 식은 좌표들의 길이의 제곱을 저장하는 배열).
저 k를 전역적으로 쓰면 문제에서 n을 입력받을 때 마다 초기화가 안되서 틀렸다 라고 떠야할텐데 왜 시간초과라고 떳을까요?
(초기화가 되지 않으니 두번째 정사각형 좌표 4개 입력할때, 배열의 크기를 넘어가 버려 틀렸습니다 라거나 런타임에러가 발생해야하는게 아닐까요)