10875번 - 뱀
안녕하세요 풀어보던 중 질문글들을 읽어봐도 예외케이스가 없는 것 같아 질문 남깁니다
알고리즘은 모든 point 들(마지막 invalid(경계선 밖) point 하나 포함) 을 저장한 뒤,
iterate 하며 여태 나왔던 vertical, horizontal segment 들을 pair 로 저장해 두고
종료조건을
1. point 가 invalid 하거나
2. 여태 나왔던 segment들 중 직전 segment 를 제외한 자신과 수직인 segment 와 intersect 하거나
3. 여태 나왔던 segment 들 중 자신과 평행이면서 같은 높이의 segment 와 intersect 할 때
로 설정하여 진행했습니다 (변수형은 long long 으로 했구요)
(처음에 마지막 명령까지 수행 후 직진하여 벽에 충돌한 다음 칸의 점을 넣어줘서 뱀이 자신에 충돌하지 않더라도 1.조건에서 끝나도록 했습니다)
반나절 정도 고민해 봤는데 안 떠올라서 구현 실수인가 의심도 되는데.. 코드가 더럽지만 한번 확인해주시면 넘나 감사할 것 같습니다 ㅠㅠ
제 코드와 비교해서 랜덤으로 반례 데이터를 만들어보았습니다
<입력>
6 22 L5 L
<ans>
16
<wa>
23
아.. 마지막 invalid point 만들 때 한 변의 길이가 L이라고 착각하여 진행방향으로 L+1 보내주면 밖으로 나갈 줄 알았는데 2L+1 을 더해줘야 하는 부분에서 실수가 났네요
55, 56 라인의 각각 3번째 L+1 부분을 2L+1 로 고쳐주니 해결되었습니다. 반례 찾아주셔서 감사합니다!!
댓글을 작성하려면 로그인해야 합니다.
dong6788 3년 전
안녕하세요 풀어보던 중 질문글들을 읽어봐도 예외케이스가 없는 것 같아 질문 남깁니다
알고리즘은 모든 point 들(마지막 invalid(경계선 밖) point 하나 포함) 을 저장한 뒤,
iterate 하며 여태 나왔던 vertical, horizontal segment 들을 pair 로 저장해 두고
종료조건을
1. point 가 invalid 하거나
2. 여태 나왔던 segment들 중 직전 segment 를 제외한 자신과 수직인 segment 와 intersect 하거나
3. 여태 나왔던 segment 들 중 자신과 평행이면서 같은 높이의 segment 와 intersect 할 때
로 설정하여 진행했습니다 (변수형은 long long 으로 했구요)
(처음에 마지막 명령까지 수행 후 직진하여 벽에 충돌한 다음 칸의 점을 넣어줘서 뱀이 자신에 충돌하지 않더라도 1.조건에서 끝나도록 했습니다)
반나절 정도 고민해 봤는데 안 떠올라서 구현 실수인가 의심도 되는데.. 코드가 더럽지만 한번 확인해주시면 넘나 감사할 것 같습니다 ㅠㅠ