qltifmf   3년 전

자세한 설명은 코드 안에있고요

mj2park님이 올려주신 예제중 1000개짜리 답이 1352로 나오는것빼면 다른분들의 예제는 다맞아요.

예제가 1000개라서 어디에서 틀렸는지 확인하기도 쉽지가 않네요

일단 저장은 1개배열만 사용했고 크기는 n*2로 했습니다

입력받을때 이전 좌표에 있는것 비교하고 +했을때 <=w면 담당 가능이라는 의미로 

이전좌표의 다음값은 지금의좌표

지금좌표의 이전값은 이전좌표

주고 한줄이 끝날때 그줄의 시작 좌표 (0과 n)때 원의 끝과 처음의 이전값, 다음값을 확인함 

0좌표의 이전값, n-1좌표의 다음값

이때 담당 가능이라면 담당 가능갯수를 의미하는 how값을 ++하고

동시에 우선순위를 담당하는 how값은 숫자가 적을수록 우선순위가 크게작용한다.

이제 typedef struct를 사용한 2중 배열을 사용

three[우선순위].[해당좌표][0=이전좌표,1=다음좌표,2=다른줄,3=나의 좌표]

로하고 우선순위가 낮은것부터 for문을 사용해 진행

같이 담당할수있는것이 없으면 1개만 담당, 다음것으로 넘어감

같이 담당할수 있는게 있다면 같이 담당한다하고

혹시 모르지 자기자신과 같이 담당하는 주변좌표들의 우선순위, 즉 같이 담당할수있는것의 갯수를 낮추며 낮춰진숫자에 맞는 우선순위에 추가시킴

또만난다해도 담당했나 안했나를 가장 먼저 확인하므로 바로 넘어갈수있음

예상되는 시간은

n*2(입력받기)*2(이전값들과 비교)+n*2(우선순위 정렬)+n*2*2정도인데

아에 런타임 에러라고 시작도 안하네요. 도와주세요

댓글을 작성하려면 로그인해야 합니다.