본문 바로가기

Learning-log/Algorithm 문풀53

백준 17182번 우주탐사(JAVA) package baek.gold3; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; import java.util.StringTokenizer; public class Main_17182우주탐사 { static int answer = Integer.MAX_VALUE; static boolean[] visited; static int[][] dist; static int N; public static void main(String[] args) throws IOException { BufferedReader br = new BufferedRead.. 2023. 9. 30.
(Java)백준 1991. 트리 순회 1. 문제 조건 N개의 노드를 가진 트리가 노드 자신과 그 노드에 대한 왼쪽, 오른쪽 자식 주어지는 형태로 입력값이 들어옴. 주어진 트리를 전위, 중위, 후위 순회한 결과를 출력해야 함 2. 아이디어 문제에 대한 특별한 아이디어보다는 트리의 구현이 필요했던 문제. 입력되는 노드 값이 A ~ Z만 가능하므로 크기가 26인 배열을 활용해도 괜찮음(메모리 낭비 크지 않을 것이기 때문) 하지만 트리 구현 공부를 할 겸, 노드 클래스와 트리 클래스를 필요에 맞게 직접 만들어 구현해 봄. 3. 구현 - 아쉬운 점 : 트리 클래스의 search 부분 구현이 탐색과 삽입의 기능을 모두 하고 있어 아쉬움이 남음. search는 해당 data를 찾는 노드를 Root부터 찾기 시작해서 최종적으로 새로 들어갈 data가 들어.. 2023. 6. 20.
SWEA - 3124 최소 스패닝 트리 1. 문제 조건 내용 2. 아이디어 내용 3. 구현 (1) Prim Algorithm 사용 package D4; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.Arrays; import java.util.Comparator; import java.util.List; import java.util.PriorityQueue; import java.util.Queue; import java.util.StringTokenizer; public class SE_최소스패닝트리 { static class Node{ in.. 2023. 4. 16.
(Java) SWEA 5650. 핀볼 게임 1. 문제 조건 어릴 때 하던 핀볼 게임을 코드로 구현해야 하는 문제. 핀볼 게임 판이 테스트케이스로 주어지며, 각 번호마다 핀볼 판의 상태를 나타내준다. 0번은 아무 블록도, 홀도 없는 상태 1번 ~ 5번은 각 번호에 해당되는 블록이 존재하며 블록에 모양에 따라 핀볼이 꺾이는 방향이 달라진다.(대각선 부분은 90도로, 아닌 부분은 반대방향으로 핀볼이 튕겨나가게 됨) 6번 ~ 10번은 나온다면 웜홀로 항상 두 개씩 나오며 같은 번호인 웜홀로 핀볼의 방향은 유지한 채 이동하게 된다. -1번은 블랙홀이며 블랙홀을 지나가면 핀볼이 빨려들어감으로써 게임이 끝나게 된다. 게임이 끝나는 조건은 처음 위치에 핀볼이 되돌아오거나 핀볼이 빨려들어가거나 두가지이다. (명심할 것) 또한, 핀볼은 상하좌우 이렇게 네 방향으로.. 2023. 4. 5.
(Java)백준 11729. 하노이 탑 이동 순서 1. 문제 조건 어릴 때 많이 해보던 하노이탑!! 내가 정말 좋아하던 놀이였다 ,, 그냥 내가 알고 있던 하노이탑 규칙 그 자체 ! 원판을 옮긴 총 개수와 옮긴 과정(원판이 원래 있던 위치 원판을 옮긴 목적지)를 각각 순차적으로 출력해야 했다. 2. 아이디어 하노이 수열의 점화식을 외워본 적이 없어서 하노이 수열의 규칙부터 찾아봐야 했다. 많은 관찰과 고민을 거듭한 끝에 점화식을 찾았고, 하노이를 옮기는 과정에 전체 솔루션 내에 작은 솔루션들을 구분할 수 있게 됐다. 알고리즘 스터디원들에게 웹엑스로 필기하며 설명해준 과정도 아래 첨부한다. 내가 사고한 과정을 최대한 그대로 설명해주려고 노력했다. 규칙을 찾아간 과정은 우선, 원판 개수에 따라서 이동 과정이나 하노이 수를 관찰하고 그 과정에서 규칙성을 발견.. 2023. 3. 26.
(Java)백준 24060 알고리즘 수업 - 병합 정렬 1 1. 문제 조건 문제 제목 그대로 주어진 수를 병합정렬을 이용해 푸는 문제. 숫자를 정렬 할 때마다 개수를 세서, K번째 정렬한 숫자를 출력해야 한다. 2. 아이디어 구현해놓은 병합 정렬을 활용하기 단, 전체를 정렬할 필요 없이, 문제의 조건이 충족되는 순간 모든 메서드를 멈추고 결과값을 출력해봤다. 3. 구현 package Silver4; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; import java.util.StringTokenizer; public class Main_24060병합정렬1 { static int[] arr; stati.. 2023. 3. 26.