문제 링크: https://www.codetree.ai/frequent-problems/hide-and-seek/description
2시간 넘게 맞왜틀 시전하다가(토론장에 있던 모든 예제도 다 통과) 이상한 부분 하나와 잘못한 부분 하나를 고치니까 통과가 되더라. 3시간 살짝 이내에 풀었는데, 이거 현장에서 봤으면 절대 못 풀었을 것 같다.
잘못했던 부분은 line 22번 while문. 이거 빼먹어서 도망칠 수 있는 도망자 중 각 좌표에서 1명씩만 움직였다.
이상했던 부분은 runner_move() 함수 내 주석처리한 이중for문이었는데... 알고보니 오타였다. y를 x로 잘못 썼는데 이거때문에 1시간 더 날렸다... 제발 현장에서는 이런 실수 하지 말자......
술래가 달팽이 모양으로 돌아가는데, 이전에 풀었던 백준 21611 - 마법사 상어와 블리자드 문제에서는 회오리 모양을 일자로 펴놓고 풀었다면, 이번에는 그럴 여건이 안 되어서 직접 달팽이 모양으로 이동하는 걸 구현했다. 사용한 변수가 엄청 많아졌는데...
- 규칙 상 술래는 센터부터 현재 방향으로 1, 1, 2, 2, 3, 3...칸씩 이동한다.
- 위의 1, 1, 2, 2, 3, 3...을 tag_max_move에 저장한다고 했을 때, 현재 방향으로 연속해서 이동한 횟수인 tag_cur_move가 tag_max_move에 도달할때마다 0으로 초기화시켜주고, 방향 전환을 해야한다.
- 함수 하나로 안에서 바깥으로, 바깥에서 안으로 오는 걸 구현하려면 이거 체크하는 flag를 또 달아줘야 한다.
이렇게 구현하는게 맞나...? 이 부분 구현할 때는 실수 없이 한 번에 제대로 구현하긴 했는데, 너무 복잡하다는 느낌은 지울 수가 없다. 어차피 좌표 (y,x)에서는 무조건 정해진 방향대로만 움직이니까, n이 크지 않다면 n*n matrix 파두고 안->바깥, 바깥<-안일 때 해당 좌표에서 어느 방향으로 이동해야 하는지 미리 만들어두고 코드 짜도 될 것 같고...
'알고리즘 문제풀이 > 코드트리(삼성 기출)' 카테고리의 다른 글
색깔 폭탄(2021 상반기 오전 2번, 백준 21609 상어 중학교) (0) | 2022.10.14 |
---|---|
정육면체 한번 더 굴리기(2021 하반기 오전 1번, 백준 23288 주사위 굴리기 2) (0) | 2022.10.11 |
바이러스 검사(2015 하반기 1번, 백준 13458 시험 감독) (0) | 2022.10.09 |
외주 수익 최대화하기(2017 상반기 오전 2번, 백준 14501 퇴사) (0) | 2022.10.09 |
토스트 계란틀(2018 하반기 오전 2번, 백준 16234 인구 이동) (0) | 2022.10.09 |