본문 바로가기

Algorithm43

[백준]boj 17070 파이프 옮기기1 접근 방법 1. 갈 수 있는 방향에 대한 인덱스를 2차원 배열에 저장하였습니다. 방향에 대한 이동은 dir 이차원 배열을 이용하여 오른쪽 이동, 아래로 이동, 대각선 이동을 구현하였습니다. 2. 재귀를 진행하면서 현재 방향으로 갈 수 있는 경우에 대해 모든 탐색을 진행하였습니다. 이를 위해 현재 방향에 대해 매개변수로 넘겨줍니다. 구현하며 어려웠던 점 1. 문제 조건을 하나 빼먹었는데, 빈칸이어야 하는 곳에 대한 확인이 없었습니다. 추가 접근 방안 1. dp로도 이 문제를 접근할 수 있습니다. public class Main_17070 { private static int N; private static int[][] maps; private static boolean[][] visited; privat.. 2022. 9. 30.
[SWEA] 2382번 미생물 격리 - 자바 접근 방법 1. 핵심 로직 : 미생물을 모두 이동시킨 후에 합쳐질 수 있는 미생물에 대해 처리 2. 미생물이 충돌하는 경우(같은 좌표인 경우)에 대해 확인하기 위해 Collections.sort를 사용하여 같은 좌표에 대해 모여있을 수 있도록 하였습니다. 구현 설명 LinkedList locations : 미생물의 좌표를 저장하는 리스트입니다. 구현 시 주의 사항 리스트를 사용하면서 미생물을 처리하는 과정에서 remove함수를 사용하게 됩니다. 이때 인덱스에 대해서도 -1 해주어야 합니다. 그렇지 않으면, 처리하는 과정에서 일부 요소가 누락될 수 있습니다. List의 논리적 크기는 고정되어 있지 않으며, List에 있는 요소의 삽입이나 삭제에 따라 변경됩니다. 구현하며 어려웠던 점 sort를 위해 com.. 2022. 9. 29.
[SWEA] 4008번 [모의 SW 역량테스트] 숫자 만들기 - 자바 문제 : 주어진 연산자 카드를 사용하여 수식을 계산했을 때 그 결과가 최대가 되는 수식과 최소가 되는 수식을 찾고, 두 값의 차이를 출력한다. 접근방법 연산자의 순서에 대해 모든 경우의 수를 따진다. => 순열 각 연산자의 개수 '+' 2 개, '-' 1 개, '*' 0 개, '/' 1 개의 경우 위와 같은 경우에는 {+, +, -, /} , {+, -, +, /}, {/, -, +, +} 등의 연산자 순서에 대해 경우의 수를 나타낼 수 있다. 위에서 경우의 수를 구한뒤 이에 대해 사칙연산을 수행하여 결과값을 도출해낸다. 구현 코드 아래의 permutation()함수의 output 배열에서는 입력으로 받았던 연산자 배열에 대한 인덱스의 순서가 저장된다. public class Solution_4008 {.. 2022. 9. 14.
[BOJ 백준] 11403 경로 찾기 - 자바 접근 유형 : dfs 접근 방법 : boolean 배열을 일차원 배열로 선언하여, 각 정점에 대해 방문했는지 여부를 확인한다. 모든 정점에 대해 dfs 탐색을 통해 갈 수 있는 노드까지 탐색해본다. 이를 위해 for문에서 boolean 배열을 초기화해주는 작업이 필요하다. public class Main_11403 { private static int N; private static boolean[] visited; private static int[][] resultMatrix; public static void main(String[] args) throws NumberFormatException, IOException { BufferedReader br = new BufferedReader(new .. 2022. 9. 4.