강의로 돌아가기
James_ParkH

약간의 팁!

문제 풀다가 아무리 생각해도 코드가 너무 지저분하다고 생각되어서 질문하기를 보다가 우연히 이런 조건을 체크해보라고 해서
해봤더니 너무 쉽게 풀리는..... 그래서 다른 분들에게 도움을 드리고자 팁 남깁니다.

  • 문제에서 체크해야 하는 부분은 P를 기준으로 상,하,좌,우 (2칸씩), 대각선(1칸씩)을 체크해서 거리두기(맨해튼거리<=2)가 잘 되고 있는지를 보는건데, P와P 사이에 X(파티션)가 있다면 괜찮고, 대각선의 경우에는 파티션이 2개 설치되어야 하는데 이를 다 체크하려면 매우매우매우 코드가 더러워집니다...

1) O를 기준으로 상하좌우 P가 있는지 체크하자.(2개이상)
2) P를 기준으로 상하좌우 P가 있는지 체크하자.(1개이상)

1)을 하는 이유는 PXP는 가능하지만 POP는 불가능하다. 따라서 O를 기준으로 상하좌우체크를 해주면 커버가 됩니다.
또한 대각선도 이와 유사하게 이렇게 되어있다고 하면 대각선도 체크할 수 있습니다.
O P
P
따라서 2이상인지만 체크하면 됩니다.

2) 조건은 아래와 같은 케이스의 경우때문에 체크를 해주어야합니다. 1의 조건에 따르면 갯수가 각각 1이나오므로...
X P P X
X O O X
X X X X

  • 윤재박

    좋은 아이디어 감사합니다~! 덕분에 잘 풀었네요

    윤재박―2022.06.10 16:03
0 개의 답변
답변 쓰기
이 입력폼은 마크다운 문법을 지원합니다.