Algorithm 306

22.블록 이동하기

📍 문제 설명 https://programmers.co.kr/learn/courses/30/lessons/60063 코딩테스트 연습 - 블록 이동하기 [[0, 0, 0, 1, 1],[0, 0, 0, 1, 0],[0, 1, 0, 1, 1],[1, 1, 0, 0, 1],[0, 0, 0, 0, 0]] 7 programmers.co.kr 💡 접근 최단거리 미로찾기 같은 문제였는데 로봇이 2 X 1의 크기라는 것이 변수였다. 미로 찾기 문제와는 달리 해당 좌표의 방문체크를 하는 배열이 아닌 리스트가 필요했다. 현재 위치에서 상하좌우, 로봇이 가로로 있을 때의 회전, 세로로 있을 때의 회전 각각 다르게 처리해줬어야했다. 이동할 수 있는 위치에 대해서 방문 좌표 리스트를 확인해서 방문 가능한 곳이라면 큐에 넣고 방문..

Algorithm/이코테 2022.01.09

21.인구이동

📍 문제 설명 💡 접근 x일 동안 인구 이동이 발생하는지 출력하면 되는 문제인데 국경선이 열렸을 경우 묶이는 국가에 대해 그룹번호를 지정해준 뒤 그룹 번호가 n * n (각각의 그룹 번호로 묶여서 인구 이동이 불가능 한 경우) 라면 그 때의 일 수를 출력해주면 된다. 👩‍💻 코드 import java.util.*; class Position { private int x; private int y; public Position(int x, int y) { this.x = x; this.y = y; } public int getX() { return this.x; } public int getY() { return this.y; } @Override public String toString() { retur..

Algorithm/이코테 2022.01.09

20.감시 피하기

📍 문제 설명 💡 접근 치킨 배달문제와 유사한 조합뽑기 문제 장애물을 세운뒤 감지를 하고 장애물을 없애는 작업도 필요하다. 1.모든 빈칸에 대해서 장애물을 3개 뽑고 세우기 2.장애물을 3개 뽑았다면 해당 위치의 좌표에 장애물을 세운다. 3.모든 선생님의 위치에서 상하좌우를 쭉 확인하여 학생를 감지한다. 4.한번이라도 감지가 되면 NO 👩‍💻 코드 import java.util.*; public class Main { static ArrayList teachers = new ArrayList(); static ArrayList spaces = new ArrayList(); static int[] combi; static int n,spaceLen; static char[][] map; static boo..

Algorithm/이코테 2022.01.09

19.연산자 끼워넣기

📍 문제 설명 💡 접근 숫자 사용횟수와 연산 결과값을 이용하는 재귀함수를 만들어서 계산해주기 1,2,3,4,5,6 / 덧셈 2 뺄셈 1 곱셈 1 나눗셈 1 d(1,1)일 때 / 1 add = 1 연산결과 1+2 = 3 d(2,3) add = 0 연산결과 1+2+3 = 6 d(3,6) sub = 0 연산결과 1+2+3-4 = 2 d(4,2) mul = 0 연산결과 1+2+3-4*5 = 10 d(5,10) div = 0 연산결과 1+2+3-4*5/6 = 1 d(6,1) 이런식으로 모든 연산식에 대해서 최댓값/최솟값을 n번 사용할 때 마다 기록해준다. 👩‍💻 코드 import java.util.*; public class Main { static int n; static int add, sub, mul, di..

Algorithm/이코테 2022.01.09

18.괄호 변환

📍 문제 설명 https://programmers.co.kr/learn/courses/30/lessons/60058 코딩테스트 연습 - 괄호 변환 카카오에 신입 개발자로 입사한 "콘"은 선배 개발자로부터 개발역량 강화를 위해 다른 개발자가 작성한 소스 코드를 분석하여 문제점을 발견하고 수정하라는 업무 과제를 받았습니다. 소스를 programmers.co.kr 💡 접근 문제에서 요구하는 순서대로만 구현하면 되는 문제였다. 👩‍💻 코드 import java.util.*; public class Main { public static void main(String[] args) { Scanner kb = new Scanner(System.in); String p = kb.nextLine(); System.out..

Algorithm/이코테 2022.01.08

17.경쟁적 전염

📍 문제 설명 💡 접근 바이러스 번호와 초 / x, y 좌표를 필드로 하는 Virus 클래스를 만들어서 리스트에 넣어주고 큐를 이용해서 바이러스 번호가 낮은 것부터 상하좌우로 바이러스 증식을 시키면 되는 문제였다. 👩‍💻 코드 import java.util.*; public class Main { public static int[] dx = {-1,1,0,0}; public static int[] dy = {0,0,-1,1}; public static int s; public static ArrayList viruses = new ArrayList(); public static void main(String[] args) { Scanner kb = new Scanner(System.in); //NXN 시..

Algorithm/이코테 2022.01.07

16.연구소

📍 문제 설명 💡 접근 1.빈 공간에 벽설치 2.벽이 3개 설치 됐을 때 2인 지점 바이러스 전파 3.남아 있는 안전 영역 크기 중 최댓값 저장 2.에서 기존 배열이 아닌 기존 배열을 저장하는 임시 배열을 쓴 이유는 상하좌우를 탐색해나가면서 종착점에 대한 기준이 있어야 그 종착점에서의 안전 영역 크기를 구한 후 배열을 원래의 값으로 변경시키는데 없기 때문에 쓰고나서 버릴 배열을 사용했다. 👩‍💻 코드 import java.util.*; public class Main { static int[] dx = {-1,1,0,0}; static int[] dy = {0,0,-1,1}; static int n, m, result; static int[][] map, temp; public static void ma..

Algorithm/이코테 2022.01.07

15.특정 거리의 도시 찾기

📍 문제 설명 💡 접근 4개의 숫자중에 2개를 뽑는 순열문제임 방문안한 노드에 대해서만 거리 기록하여 풀이 👩‍💻 코드 import java.util.*; public class Main { static ArrayList graph; static int[] ch, dis; public static void main(String[] args) { Scanner kb = new Scanner(System.in); int n = kb.nextInt(); //도시 갯수 int m = kb.nextInt(); //도로 갯수 int k = kb.nextInt(); //거리 정보 int x = kb.nextInt(); //출발 도시 번호 ch = new int[n+1]; //도시 방문 체크 배열(1번 부터) dis ..

Algorithm/이코테 2022.01.07

13.치킨 배달

📍 문제 설명 💡 접근 강의에서 배웠던 피자 배달거리 문제와 똑같은 문제다. 처음에는 치킨집의 갯수 중에 1개,2개, .. 뽑는 것중 도시의 치킨 거리가 제일 작게 되는 갯수를 찾는 줄 알았다. 하지만 이미 폐업할 치킨집의 갯수는 정해져 있고(m) 어느 치킨집들이 선택이 되어 도시의 치킨 거리가 최소가 되는지 찾는 문제였다. 조합 부분은 아래의 코드를 기억하자! chickenLen개 중에서 combi(m) 만큼 뽑는 조합을 찾는 메서드임 for(int i = s; i < chickenLen; i++) { combi[L] = i; solution(L+1,i+1); } 👩‍💻 코드 import java.util.*; public class Main { public static ArrayList chicken..

Algorithm/이코테 2022.01.06