본문 바로가기

Algorithm/SWEA10

[SWEA] 자바 1249. [S/W 문제해결 응용] 4일차 - 보급로 접근 방법 1. BFS로 접근하였습니다. 경로에 대해 저장할 이차원 배열 int[][] sum을 선언하여 이미 방문한 경로인 경우에는 현재 방문할 예정인 경로와 이미 방문한 경로의 값을 비교해 현재 방문할 예정인 경로가 더 작은 경우 큐에 다시 넣어주었습니다. 2. 특히, 이 문제의 경우 그냥 큐를 사용하였더니 시간초과가 났습니다. 따라서, 우선순위 큐를 통해 작은 값들을 먼저 돌게 하여 시간 초과 문제를 해결할 수 있었습니다. 구현 설명 1. class Point에는 x,y 좌표와 현재 경로에 대한 합을 저장하기 위한 value를 선언하였습니다. 2. int[][] dir = {{0, -1}, {0, 1}, {-1, 0}, {1, 0}} 의 경우 기존에 상하좌우로 진행하였던 방향과는 다르게 좌우상하로 .. 2022. 10. 2.
[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.
[SWEA] 7465 창용 마을 무리의 개수 - 자바 문제 접근 : DFS 고려 요소 양방향이므로 양방향 간선으로 저장해야 합니다. 또한, 연결리스트를 통해 이러한 간선에 대해 표현하였습니다. 연결리스트 초기화 필수!! 노드는 1~N번 모든 노드에 대해 DFS를 탐색해야하며, 이미 방문한 노드(이미 그룹이 됨)는 탐색을 수행하지 않도록 boolean배열을 사용합니다. public class Solution_7465 { private static List node; private static boolean[] visited;//방문 여부 확인 private static int N;//마을에 사는 사람의 수 public static void main(String[] args) throws NumberFormatException, IOException { Buf.. 2022. 8. 24.