본문 바로가기

구현23

[백준 17141] 연구소 2 www.acmicpc.net/problem/17141 17141번: 연구소 2 인체에 치명적인 바이러스를 연구하던 연구소에 승원이가 침입했고, 바이러스를 유출하려고 한다. 승원이는 연구소의 특정 위치에 바이러스 M개를 놓을 것이고, 승원이의 신호와 동시에 바이 www.acmicpc.net dfs + bfs 문제이다. 대부분의 구현 문제와 유사하게 backtracking을 사용하여 연구소를 선택하고 m = cnt라면 bfs를 진행하는 구조이다. 문제 특성상 이차원배열 2개를 사용하는 것이 좋다. 하나는 벽과 빈곳, 연구소를 표현하기 위한 오리지널 배열과 바이러스가 퍼지는 경로를 나타내는 배열 2가지가 필요하다. 경로 배열은 bfs시작시마다 매번 초기화해줘야 한다. 아니면 이전 경로가 저장되어 값이 잘못나온.. 2020. 12. 19.
[백준 15684] 사다리 조작 www.acmicpc.net/problem/15684 15684번: 사다리 조작 사다리 게임은 N개의 세로선과 M개의 가로선으로 이루어져 있다. 인접한 세로선 사이에는 가로선을 놓을 수 있는데, 각각의 세로선마다 가로선을 놓을 수 있는 위치의 개수는 H이고, 모든 세로선 www.acmicpc.net 계속 시간초과와 원인모를 틀렸습니다를 받은 문제.. dfs를 사용해서 구현하는 문제이다. 전체 배열에서 a번째 줄 b와 b+1 사다리가 연결되어 있다면 arr[a][b] =true로 표시한다. 이렇게 표시한 사다리는 i번째 사다리가 i번째에 도달하는지 확인할 때 왼쪽 오른쪽 모두 확인해서 현재 위치를 col +-1해줘야 한다. 추가된 사다리가 4이상이면 -1을 출력하라고 했으므로 cnt>3이면 return;하.. 2020. 12. 17.
[백준 14503] 로봇 청소기 www.acmicpc.net/problem/14503 14503번: 로봇 청소기 로봇 청소기가 주어졌을 때, 청소하는 영역의 개수를 구하는 프로그램을 작성하시오. 로봇 청소기가 있는 장소는 N×M 크기의 직사각형으로 나타낼 수 있으며, 1×1크기의 정사각형 칸으로 나누어 www.acmicpc.net 다른 풀이 보니까 dfs로 푸는 경우도 있지만 그게 더 복잡할꺼 같아서 while문을 사용했다. 조건을 잘못 읽어서 처음에 테케도 통과를 못시켰다ㅠ 조건을 잘 보면 1. 현재 위치를 청소 2. 현재 위치에서 왼쪽 방향으로 회전. 2-1. 왼쪽 회전 시에 앞에 청소 안한 칸이 있다면 전진 -> 1 2-2. 청소를 했거나 벽이다. -> 다시 왼쪽 회전 2-3. 4방향 모두 벽 or 청소한 구역 -> 원래 방향에서.. 2020. 12. 17.
[백준 14499] 주사위 굴리기 www.acmicpc.net/problem/14499 14499번: 주사위 굴리기 첫째 줄에 지도의 세로 크기 N, 가로 크기 M (1 ≤ N, M ≤ 20), 주사위를 놓은 곳의 좌표 x y(0 ≤ x ≤ N-1, 0 ≤ y ≤ M-1), 그리고 명령의 개수 K (1 ≤ K ≤ 1,000)가 주어진다. 둘째 줄부터 N개의 줄에 지도 www.acmicpc.net 구현문제 구현문제는 알고리즘이 어려운 건 아닌데 풀이를 생각하기가 빡세다 총 세 부분으로 나눠서 동작한다. 1. 좌표값이 이동 - 명령에 맞게 좌표값을 이동시킨다. 이 때 배열의 범위를 벗어나는지 체크하고 벗어난다면 움직이지 않는다. 2. 주사위 굴리기 - 명령에 맞게 주사위를 굴려서 주사위 배열을 변화시킨다. 3. 굴린 주사위의 바닥면과 지도 .. 2020. 12. 17.