몽셀통통의 블로그
문제https://www.acmicpc.net/problem/2931 풀이이 문제는 dfs를 이용하여 visit으로 체크하면서 이동하는 방법을 사용1. dfs를 이용하여 상하좌우 방향으로 이동 + visit으로 체크 (다시 0으로 만들지 않음)1-1. 상하좌우 방향으로 이동할 때 checkdir 함수 (현재 가스관 모양으로 움직이게 도와주는 함수)를 만들어서 가능한 반향으로만 이동2. 이동한 칸이 '.' 이면 원래 가스관이 존재 했던 곳이라 판단2-1. 비트마스크를 사용하여 bit 변수에 이동 방향을 변수에 저장3. '.'이면서 visit이 체크 된 곳의 좌표를 출력하고 bit에 맞는 가스관 모양 출력 이렇게 설정을하여 비트마스크에 적용 위와 같이 비트마스크 진행 코드12345678910111213141..
문제https://www.acmicpc.net/problem/9328 풀이bfs + 시뮬 문제1. 경계면에 있는 '.'이나 '$', 소문자가 있다면 출발지로 모두 큐에 넣는다.2. 상하좌우로 돌린다3. visit 체크를 하면서 '*'은 피해준다 여기서 관건은 열쇠가 없어 지나갔던 문의 열쇠를 다시 획득하게 될 경우이다나의 케이스 같은 경우는 열쇠를 얻을 때 이전에 열쇠가 없어 지나 갔던 문들 중에 맞는 열쇠의 문을 다시 큐에 넣어 주었다.doorlist[H][W]를 만들어서 열쇠가 없지만 지나간 문들을 -1로 표시해 두었다이후, 새로운 열쇠를 얻게 될때마다 이전에 지나갔던 문과 비교해서 맞으면 다시 큐에 넣는 방식으로 하였다. 이번 문제에서 틀렸던 부분은 상하좌우로 움직일때 큐에 넣으면서 visit을 체..
문제13459 구슬 탈출 https://www.acmicpc.net/problem/1345913460 구슬 탈출2 https://www.acmicpc.net/problem/13460 풀이최소 움직인 횟수를 구하는 문제이므로 bfs 사용R구슬이 움직일때 B구슬의 위치도 중요하므로 visit[MAX R구슬][MAX R구슬][MAX B구슬][MAX B구슬] 이용bfs로 상하좌우를 탐색하며 갈 수 있는 곳을 큐에 넣어준다 여기서 중요한 점은 R구슬과 B구슬이 같은 위치에 놓일때 예외 처리가 중요한데if문을 사용하여 아래 코드와 같이 처리해주면 된다 13460 구슬 탈출2 문제는 움직이는 횟수를 구하는 문제 이므로주어진 코드를 ans를 출력하는 방법으로 바꾸어 주면 된다. 코드13459 구슬 탈출, 13460 구..