전체 글 573

경사로

📍 문제 설명 💡 접근 모든 행에 대해서 모든 열까지 갈 수 있는지, 모든 열에서 모든 행까지 갈 수 있는지 판단해주면 되는 문제였다. 1.bfs 풀이와 비슷하게 큐를 이용하였고 바로 이동하든 경사로를 설치해서 이동하든 이동된 좌표를 큐에 넣어주었다. 2.(0, 0) 좌표는 행의 끝, 열의 끝 모두 판단해줘야하기 때문에 kind로 판단해주었다. 3.경사로가 겹치는 경우엔 설치를 하지 못하므로 설치할 때 설치가 된 모든 좌표에 대해서 설치 되었다고 체크해주었다. 👩‍💻 코드 import java.util.*; public class Main { static int n, m, k, answer, cnt, max, min, sum, count, l; static int[][] board, clone, dis;..

Algorithm/baekjoon 2022.01.26

인구이동

📍 문제 설명 💡 접근 1.먼저 국경선이 열려 인구이동이 발생하는 국가들에 대해 각각 그룹번호를 붙여주기 위한 배열을 하나 생성한다. 2.모든 지점에 대해서 탐색하는데 그룹번호가 붙여지지 않은 나라들에 대해서만 탐색한다. 3.해당 지점에서 상하좌우 확인하여 국경선이 열리는 나라라면 큐에 해당 좌표를 넣고 리스트에도 해당 좌표를 넣는다. 4.국경선이 열리는 것을 확인했으면 리스트에서 연합 국가들을 꺼내 인구를 분배한다. 5.연합번호가 n * n이 되면(인구이동을 할 수 없으면) 멈추고 아니면 1번으로 돌아가서 다시 수행한다. 👩‍💻 코드 import java.util.*; class Position { private int x; private int y; public Position(int x, int y..

Algorithm/baekjoon 2022.01.26

이차원 배열과 연산

📍 문제 설명 💡 접근 생각보다 복잡해서 꽤나 시간을 많이 썼다. 1.계수 정렬로 값, 등장 횟수를 구하고 해당 필드를 갖는 클래스를 만들어서 정렬기준에 따라 정렬한다. 2.새로운 배열에 list 사이즈의 2배(값, 등장 횟수를 배열에 넣어야하므로)로 초기화한다. 3.해당 배열을 int[] 형 리스트에 담아놓고 새로운 배열을 만든다. 추가 조건을 잘못넣었었는데, 배열의 길이가 3x3보다 작을 때 0을 3x3만큼 채워줘야 하는가이다. 해당 조건은 값이 맞는지 찾는 지점보다 크기가 작은 배열이 들어올 때 ArrayIndex~ 에러가 나서 넣어줬었는데, 그냥 값이 맞는지 찾는 지점에 해당 지점보다 크기가 작으면 안된다는 조건을 넣어줌으로써 해결했다. 👩‍💻 코드 import java.util.*; public..

Algorithm/baekjoon 2022.01.25

로봇청소기(14503)

📍 문제 설명 💡 접근 이코테 책에서 풀었던 시뮬레이션 문제였다. 4번까지 회전해서 갈 수 있으면 청소해주고 갈 수 없으면 뒤로가거나 멈추면 된다. 👩‍💻 코드 import java.util.*; public class Main { static int n, m, answer, cnt, max, min; static int startRobotX, startRobotY, startRobotDireciton; static int Hx, Hy, Ex, Ey; static int[][] board, clone, dis; static boolean[][] visited; static int[] ch, pm, combi, graph, go = {1,2,3}; static boolean flag = false; sta..

Algorithm/baekjoon 2022.01.25

로봇

📍 문제 설명 💡 접근 명령이 순차적으로 진행되는게 아니라 각각 진행됨에 유의를 해야한다. 해당 좌표에 방문했더라도 가리키고 있는 방향이 다를 수 있으니 이 문제에서도 3차원배열을 사용했다. 👩‍💻 코드 import java.util.*; public class Main { static int n, m, answer, cnt, max, min; static int startRobotX, startRobotY, startRobotDireciton, endRobotX, endRobotY, endRobotDireciton; static int Hx, Hy, Ex, Ey; static int[][] board, clone; static boolean[][][] visited; static int[][] dis;..

Algorithm/baekjoon 2022.01.24

미로탈출

📍 문제 설명 💡 접근 처음에는 지팡의 갯수중에 1개를 뽑는 조합 문제라고 생각했는데, 범위가 작은 편이 아니었다. 방문체크하는 배열에 지팡이 사용 여부도 추가한 3차원 배열을 이용했다. 이렇게 하면 지팡이 사용하지 않았을 때 / 한 지점에 대해 지팡이를 사용하여 길을 뚫은 모든 경우에 대한 최단 경로가 나온다. 👩‍💻 코드 import java.util.*; public class Main { static int n, m, answer, cnt, max, min; static int Hx, Hy, Ex, Ey; static int[][] board, clone; static int[][] dis; static boolean[][] visited,successRoute; static int[] paren..

Algorithm/baekjoon 2022.01.24

탈출

📍 문제 설명 💡 접근 '고슴도치는 물이 찰 예정인 칸으로 이동할 수 없다.' 는 조건만 잘 처리해주고 물이 먼저 이동하도록 하면 풀리는 문제였다. 👩‍💻 코드 import java.util.*; public class Main { static int n, m, h, k, answer, cnt, max, min, wall, result = Integer.MAX_VALUE; static char[][] board, clone; static int[][] dis; static boolean[][] visited,successRoute; static int[] parent = new int[100001]; static int[] ch,pm, combi, graph; static boolean flag = fa..

Algorithm/baekjoon 2022.01.24