Algorithm 306

연구소

📍 문제 설명 💡 접근 이코테에서 풀었던 문제다. 이코테에 있던 코드가 메모리 측면에서 5배 정도 좋게 나왔다. 이유는 벽을 세울 때 마다 값을 복사하는 배열을 생성해주어서였다.. 👩‍💻 코드 import java.util.*; public class Main { static int n, m, h, k, answer,cnt, max, min, wall, result; static int[][] board, clone; static int[] visited = new int[100001]; static int[] parent = new int[100001]; static int[] ch,pm, combi; static boolean flag = false; static int[] dx = {-1,1,0,0..

Algorithm/baekjoon 2022.01.23

종이의 개수

📍 문제 설명 💡 접근 N이 3^k 꼴이라는 조건이 주어져서 주어진 예시를 이용해서 풀 수 있었다. 해당 영역의 숫자들이 같은지 판단 후 같다면 종이로 사용해서 끝내고 아니라면 잘라서 다시 판단한다. 👩‍💻 코드 import java.util.*; public class Main { static int n, m, h, k, answer,cnt, max, min, red, yellow, orange; static int[][] board; static int[] dis = {-1,1,2}; static int[] visited = new int[100001]; static int[] parent = new int[100001]; static int[] ch,pm, combi; static boolean f..

Algorithm/baekjoon 2022.01.23

숫자판 점프

📍 문제 설명 💡 접근 이동한 횟수, 붙인 문자열을 인자로 DFS 수행해주면 된다. 👩‍💻 코드 import java.util.*; public class Main { static int n, m, h, k, answer,cnt, max, L, R, C; static int[][] board, dis; static boolean[][][][] visited; static int[] ch,pm, combi; static boolean flag = true; static int[] dx = {-1,1,0,0}; static int[] dy = {0,0,-1,1}; static HashSet set = new HashSet(); public static void main(String[] args) { Main..

Algorithm/baekjoon 2022.01.22

숨바꼭질4

📍 문제 설명 💡 접근 2 문제와는 다르게 가짓수가 아닌 이동하는 경로를 출력하는 문제다. 다음지점의 인덱스에 현지점(부모) 인덱스를 집어넣고 스택에 해당 값들을 거꾸로 넣어놓고 출력하면된다. 👩‍💻 코드 import java.util.*; public class Main { static int n, m, h, k, answer,cnt, max, min, L, R, C = Integer.MAX_VALUE; static int[][] board; static int[] dis = {-1,1,2}; static int[] visited = new int[100001]; static int[] parent = new int[100001]; static int[] ch,pm, combi; static boole..

Algorithm/baekjoon 2022.01.22

숨바꼭질2

📍 문제 설명 💡 접근 가장 빠른 시간이 몇 초 후 인지, 가장 빠른 시간으로 찾는 방법이 몇 가지 인지 한가지만 구하는게 아니라 두가지 동시에 구해야되는 문제여서 조금 생각을 했다. 중복인 지점을 걸러내야하지만 동일한 시간에 방문한 지점이면 답이 될수도 있기때문에 해당 조건을 넣어야만 했다. 👩‍💻 코드 import java.util.*; public class Main { static int n, m, h, k, answer,cnt, max, min, L, R, C, second = Integer.MAX_VALUE; static int[][] board; static int[] dis = {-1,1,2}; static int[] visited = new int[200]; static int[] ch,..

Algorithm/baekjoon 2022.01.22

구슬 탈출

📍 문제 설명 💡 접근 구슬이 동시에 움직여야하고 제약 사항이 꽤 있었기때문에 많이 까다로운 문제였다. 두 구슬의 방문여부를 각각 체크 해주기위해서 4차원 배열을 사용해야 했다. 1.파란 구슬과 빨간 구슬을 동시에 기울이고 2.상하좌우로 기울이는데, 다음칸이 벽이 아니고 현재 칸이 구멍이 아니라면 계속 움직인다. 3.구슬이 같은 칸에 있을 경우에는 뒤에서 온 구슬을 먼저온 구슬 뒤에 배치시킨다. 👩‍💻 코드 import java.util.*; public class Main { static int n, m, h, k, answer,cnt, max, L, R, C; static char[][] board, dis; static boolean[][][][] visited; static int[] ch,pm,..

Algorithm/baekjoon 2022.01.22

안전영역

📍 문제 설명 💡 접근 다 잠기지 않는 경우부터 다 잠기는 경우까지 해당 높이에 따라 안전 영역 계산해주면 되는 문제였다. 👩‍💻 코드 import java.util.*; public class Main { static int n, m, h, k, answer,cnt, max; static int[][] board, dis, clone; static boolean[][] visited; static int[] ch,pm, combi; static boolean flag = true; static int[] dx = {-1,1,0,0}; static int[] dy = {0,0,-1,1}; public static void main(String[] args) { Main T = new Main(); Sca..

Algorithm/baekjoon 2022.01.21

늑대와 양

📍 문제 설명 💡 접근 예제 출력이 그렇게 안나와있어서 늑대가 상하좌우로 무한정 이동할 수 있을거라고 생각했는데, 그냥 늑대 상하좌우로 울타리 쳐주면 되는 문제였다. 👩‍💻 코드 import java.util.*; public class Main { static int n, m, h, k, answer,cnt; static char[][] board,dis; static int[] ch,pm, combi; static boolean[] visited; static boolean flag = true; static int[] dx = {-1,1,0,0}; static int[] dy = {0,0,-1,1}; public static void main(String[] args) { Main T = new M..

Algorithm/baekjoon 2022.01.21

사다리 조작

📍 문제 설명 💡 접근 문제 이해하는데 시간이 꽤나 소요됐다. 가로선을 0~3번까지 추가하여 모든 지점에 대해서 가로선을 만들어 보는 완전탐색 & 백트래킹 문제 였다. 재귀 호출시 1,1 x,y 지점 모두 가능하나 i,j라고 했을땐 오답이 나온다. ex) 추가해야할 가로선 갯수 2 i = 1, j = 3이라고 하면 1,3 1,4 가로선 설치가능 여부 확인 부 2,1로 가는게 아니라 2,3 2,4 를 확인하기 때문에! 👩‍💻 코드 import java.util.*; public class Main { static int n, m, h, k, answer; static int[][] board,dis; static int[] ch,pm, combi; static boolean[] visited; static..

Algorithm/baekjoon 2022.01.21

스타트링크

📍 문제 설명 💡 접근 전형적인 bfs 문제였다. boolean[]으로 방문여부처리해도 되지만 int[]으로 거리기록해서 구해도 된다. 👩‍💻 코드 import java.util.*; public class Main { static int n, m, k; static int[][] board,dis; static int[] ch,pm, combi; static boolean[] visited; static int[] dx = {-1,1,0,0}; static int[] dy = {0,0,-1,1}; public static void main(String[] args) { Main T = new Main(); Scanner kb = new Scanner(System.in); int f = kb.nextIn..

Algorithm/baekjoon 2022.01.19