알고리즘/BOJ

백준 9376번 탈옥

꾸준함. 2019. 7. 31. 00:12

문제 링크입니다: https://www.acmicpc.net/problem/9376

 

9376번: 탈옥

문제 상근이는 감옥에서 죄수 두 명을 탈옥시켜야 한다. 이 감옥은 1층짜리 건물이고, 상근이는 방금 평면도를 얻었다. 평면도에는 모든 벽과 문이 나타나있고, 탈옥시켜야 하는 죄수의 위치도 나타나 있다. 감옥은 무인 감옥으로 죄수 두 명이 감옥에 있는 유일한 사람이다. 문은 중앙 제어실에서만 열 수 있다. 상근이는 특별한 기술을 이용해 제어실을 통하지 않고 문을 열려고 한다. 하지만, 문을 열려면 시간이 매우 많이 걸린다. 두 죄수를 탈옥시키기 위해서 열어

www.acmicpc.net

문자열 배열을 전역으로 놓은 상태에서 push_back을 해서 끊임없이 틀렸던 문제였습니다.

이런 유형의 문제는 적지 않게 출현하는 문제이므로 유형을 익혀놓으면 나중에 코딩테스트에서 도움이 될 것 같습니다.

 

알고리즘은 아래와 같이 세 가지 경우를 생각하면 됩니다.

1. 죄수 1이 죄수 2를 데리고 바깥으로 나가는 경우

2. 죄수 2가 죄수 1을 데리고 바깥으로 나가는 경우

3. 상근이가 죄수 1, 2를 찾으로 잠입하는 경우

 

따라서, 3명이 각자 탐색하다가 한 지점에 만날 경우 탈출을 했다고 봐도 무방합니다.

즉, 각 지점마다 죄수 1, 죄수 2, 상근이가 문을 연 횟수를 저장해 놓으면 나중에 문을 연 최소 횟수를 파악할 수 있습니다.

주의할 점은 한 곳에 모인 지점이 문일 경우 죄수 1, 죄수 2, 상근이 모두 문을 열었다고 계산되어 있는 상태이므로 -2를 빼줘야합니다.

또한, 상근이는 특별한 기술을 이용해 제어실을 통하지 않고 문을 열기 때문에 입력 받은 감옥 주변을 빈칸으로 채워준 뒤 (0, 0)에서 출발하게 하면 됩니다.

 

 

개발환경:Visual Studio 2017

 

지적, 조언, 질문 환영입니다! 댓글 남겨주세요~

반응형

'알고리즘 > BOJ' 카테고리의 다른 글

백준 17070번 파이프 옮기기 1  (0) 2019.08.04
백준 3197번 백조의 호수  (7) 2019.08.01
백준 1015번 수열 정렬  (2) 2019.07.30
백준 10174번 팰린드롬  (0) 2019.07.29
백준 15652번 N과 M (4)  (0) 2019.07.14