일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 운영체제
- backtracking
- DP
- java
- 모던자바
- programmers
- 자바
- 스프링
- 백준
- 프로그래머스
- 알고리즘
- 프로젝트
- Brute-force
- 코틀린
- TDD
- DFS
- baekjoon
- Spring
- LEVEL2
- 그래프
- BFS
- algorithm
- Java8
- OS
- kotlin
- 백트래킹
- lambda
- 네트워크
- back-end
- 자료구조
- Today
- Total
목록알고리즘(Java) (45)
요깨비's LAB
import java.util.ArrayList; import java.util.List; import java.util.Scanner; class Vertax { Vertax parent; int id; boolean isVisited; public Vertax(int id) { this.id = id; parent = this; isVisited = false; } public Vertax findParent(Vertax v) { if (v.id == v.parent.id) { return v; } return v = findParent(v.parent); } public long merge(Vertax to, long total, int cost) { Vertax from = findParent(p..
이번에는 프림 알고리즘 방식으로 풀었습니다. 이것 또한 정점과 간선을 인스턴스화 하여 풀었습니다. import java.util.*; class Vertax { int id; boolean isVisited; List linkedVertaxes; public Vertax(int id) { this.id = id; this.isVisited = false; this.linkedVertaxes = new ArrayList(); } } class Edge { int toId; int value; public Edge(int toId, int value) { this.toId = toId; this.value = value; } } public class Main { public static void main(..
MST를 이용해서 풀었으며, 기존의 배열을 활용한 풀이보다는 각각의 정점과 간선을 인스턴스화하여 푸는 방식으로 진행하였습니다. import java.util.ArrayList; import java.util.List; import java.util.Scanner; class Vertax { Vertax parent; int id; boolean isVisted; public Vertax(int id, boolean isVisted) { this.parent = this; this.id = id; this.isVisted = isVisted; } public Vertax findParent(Vertax p) { // System.out.println(this.id + ", " + p.id); if(p.id..
노드 객체를 만들고 적절히 DFS 탐색하면서 부모노드를 갱신해주면 됩니다. 여기에서 이미 갱신된 부모노드는 갱신하지 않도록 예외를 걸어주었습니다. import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.Scanner; public class Main { static int N; static Element[] elements; static boolean[] visited; public static void main(String[] args) { Scanner scr = new Scanner(System.in); N = scr.nextInt(); elements = new Element[N + ..
처음에는 2차원 배열에 맵을 담아서 방향 그래프를 따른 우선 순위큐 기반의 다익스트라를 구현하였습니다.(여기까지는 스스로 아이디어 생각해내서 하루종일 걸려서 구현까지 했지만... import java.util.*; public class Main { static int V,E; public static void main(String[] args ) { Scanner scr = new Scanner(System.in); final int INF = 10000; V = scr.nextInt(); E = scr.nextInt(); int startV = scr.nextInt(); int[][] map = new int[V+1][V+1]; int[] result = new int[V+1]; for(int i=1;i
1. 아이디어 1. 입력값을 받을 때마다 해당 번째 위치에서 1번째까지 반복하며 조를 만들면서 최적의 값을 비교하여 가장 좋은 값을 선택 (1)우선 dp[0] = 0, dp[1] = 0으로 초기화 해줍니다. 0번째와 1은 자기자신이기 때문에 값의 차이가 자기자신 - 자기자신 = 0 (2)dp[2]인 경우 [1] 자기자신 그루핑한 값 + 직전의 그루핑한 값 중 최적의 값 [2] 자기자신과 바로 직전값 1과 그루핑한 값 + 1의 직전의 그루핑한 값중 최적의 값 dp[3]인 경우 [1] 자기자신 그루핑한 값 + 2에서 그루핑한 값 중 최적의 값 [2] 자기자신과 바로 직전값 2와 그루핑한 값 + 1에서부터 그루핑한 값중 최적의 값 [3] 자기자신과 1번째 까지 그루핑한 값 + 0에서부터 그루핑한 값중 최적의 ..
하나의 양팔 저울을 이용하여 물건의 무게를 측정하려고 합니다. 이 저울의 양팔의 끝에는 물건이나 추를 올려놓는 접시가 달려 있고, 양팔의 길이는 같습니다. 또한, 저울의 한쪽에는 저울추들만 놓을 수 있고, 다른 쪽에는 무게를 측정하려는 물건만 올려놓을 수 있습니다. 저울추가 담긴 배열 weight가 매개변수로 주어질 때, 이 추들로 측정할 수 없는 양의 정수 무게 중 최솟값을 return 하도록 solution 함수를 작성해주세요. 예를 들어, 무게가 각각 [3, 1, 6, 2, 7, 30, 1]인 7개의 저울추를 주어졌을 때, 이 추들로 측정할 수 없는 양의 정수 무게 중 최솟값은 21입니다. 제한 사항 저울추의 개수는 1개 이상 10,000개 이하입니다. 각 추의 무게는 1 이상 1,000,000 이..
1. 아이디어 원형 큐가 떠올라 자바의 LinkedList를 기본적으로 이용하기로 하였습니다. 그다음 값을 꺼낼때 인덱스는 항상 0(큐 이므로)으로 0을 기준으로 왼쪽으로 탐색하여 해당 값을 발견했을때의 count와 오른쪽으로 탐색하여 해당 값을 발견했을때의 count를 비교하여 작은 쪽으로 연산을 진행하여 (1번 혹은 2번) 연산을 수행한다음 값을 꺼내는 방식으로 구현하였습니다. 단, 0이 찾는 값이 바로 있으면 count는 0!! 그리고 왼쪽 방향으로 값을 찾는 연산은 리스트의 마지막 인덱스 ~ 1 까지 연산을 수행하지만 우선적으로 0번째에서 값을 확인하기 때문에 0번째에 값이 없다면 왼쪽 연산과 달리 count=1로 초기화 해주어야 합니다. 아래는 코드입니다. import java.util.Link..