-
알고리즘 Java 풀이 [백준] 17406번: 배열 돌리기 4 (JAVA 풀이) 문제 https://www.acmicpc.net/problem/17406풀이이 문제를 풀어나간 순서를 간단히 말하자면 다음과 같다.1. 연산 순서 정하기2. 회전 연산하기3. 배열값 구하기 1. 연산 순서 정하기회전 연산이 여러개면, 연산을 수행한 순서에 따라 배열이 달라지기 때문에 연산 순서 조합을 모두 구해야한다.연산은 최대 6개이기때문에 배열을 미리 만들어놔서 입력받을때 배열에 차례로 저장해두었다.배열에 연산을 미리 저장해둔 이유는 배열의 인덱스를 이용하여 연산 순서 조합을 구하기 위함이다!연산순서는 dfs(백트래킹) 방법으로 구했다. 2. 회전 연산하기제일 많은 시간이 걸렸던 부분.. [SWEA] 1954번: 달팽이 숫자 문제를 연습한다면 좋을 것 같다..일단, 1번에서 정한 연산 순서에 따라 ..
-
알고리즘 C++ 풀이 [백준] 9376번: 탈옥 (C++ 풀이) 문제 https://www.acmicpc.net/problem/9376 풀이두 죄수를 탈옥시키기 위해 열어야하는 문의 최소값을 구하는 문제이다.탈옥하는데 최단시간이나 최단거리를 구하는게 아니라 돌아가더라도 문을 최대한 적게 열고 가는게 더 중요한 문제다.탈옥시켜야 하는 죄수가 두명이나 되고 열었던 문을 또 열게할수는 없으니 문을 공유해야 하는게 어려웠다. 문제를 푸는 방법은 다음과 같다.1. 외부사람 상근이가 문을 열고 들어가는 방법2. 죄수1이 문을 열고 나가는 방법3. 죄수2가 문을 열고 나가는 방법이 세가지 방법을 더한 후 그 중에 가장 작은 값이 이 문제의 정답이다.근데 문이 있는 지점은 세사람이 모두 열고 지나갔으므로 -2를 하여 한번만 여는것으로 해두어야한다. 상근이가 밖에서 안으로 들어와야하..
-
알고리즘 C++ 풀이 [백준] 17069번: 파이프 옮기기2 (C++ 풀이) 문제 https://www.acmicpc.net/problem/17069풀이블로그 풀이를 보았다...파이프 옮기기1과 같은 문제인데 범위만 다른 문제이다파이프 옮기기1은 N이 16까지라면 이것은 32까지다. 같은 코드를 제출했더니 메모리초과가 떴다.DFS+DP 방법으로 풀었다.dp는 3차원 long long 배열이다. 예제를 보면 출력 답이 int 범위를 넘는 것을 알 수 있다.dp[a][b][c] = d의 의미 : (a, b)에서 c방향으로의 탐색을 했는데 (n-1, n-1)까지 갈 수 있는 경우의 수가 d이다.dp값을 -1로 초기화해놓는다. 그 이유는 -1이 아직 방문하지 않음을 뜻하고0은 목적지에 갈 수 있는 경우가 없다는 뜻!목적지에 도착하면 1을 리턴한다! 그러면 재귀가 순서대로 빠지면서 경로에..
-
알고리즘 C++ 풀이 [백준] 3055번: 탈출 (C++ 풀이) 문제풀이고슴도치가 몰려오는 물을 피해 목적지를 달성한다는 점에서 불 문제와 비슷하다. [백준] 5427번: 불 ☜풀이 가기1. bfs로 물을 먼저 이동시켰다. 물이 이동한 시간을 배열에 따로 저장해놓는다.'.'이랑 'S'가 있는 곳만 이동할 수 있도록 했다.2. 물을 다 이동시킨 후, bfs로 고슴도치를 이동시켰다. 마찬가지로 고슴도치의 이동시간을 다른 배열에 따로 저장해놓는다. '.'과 'D'가 있는 곳으로 이동시킬 수 있는데, 이때 '.'일 경우, 물 보다 먼저 도달하는지 체크해야한다. 즉, 물이 왔다간 시간보다 고슴도치가 왔다가는 시간이 작아야 하거나 물이 왔다간 적이 없어야 한다.3. 입력받을 때, 'D'의 좌표를 따로 저장해놓은 다음에 출력할때 고슴도치 배열의 해당 좌표 값이 -1이면 탈출하지 ..