(정점=노드 같은 뜻! 혼용해서 사용할 시 혼동 방지!) 그래프에서 각 정점끼리 사이의 최단 거리를 구하는 알고리즘 방법은 여러 가지가 있다. 문제에 따라 효율적인 방법이 다르므로 잘 선택해서 사용해야 한다. 문제의 종류 하나의 정점에서 다른 하나의 정점까지 최단 경로를 구하는 문제 하나의 정점에서 다른 모든 정점까지의 최단 경로를 구하는 문제 각 모든 정점에서 다른 모든 정점까지의 최단 경로를 구하는 문제 응용으로 한 중간 정점을 거쳐서 가는 최단경로 등 다양한 문제의 종류에 적용하여 사용할 수 있다. 알고리즘 종류 하나의 정점에서 다른 모든 정점까지 최단경로를 구하는 문제 -간선의 가중치가 모두 같은 그래프일 경우 BFS -간선의 가중치가 각각 다른 그래프일 경우 다익스트라 벨만-포드 → 음수 가중치..

문제 보러 가기 이 문제는 정확도와 효율성 2가지를 만족해야 하는 문제였다. 행 개수 n 0) { curNode = curNode.next; } for (int i = 0; i < cmd.length; i++) { String[] s = cmd[i].split(" "); if (s.length == 1) { if (s[0].equals("C")) {//삭제C curNode.prev.next = curNode.next; curNode.next.prev = curNode.prev; zNode.push(curNode); //root가 삭제될경우 next노드가 root노드가됨 if (curNode == root) { root = curNode.next; curNode = root; } //tail노드가 삭제될 ..
DP란? 부분 문제의 결과 값을 이용해 전체 문제를 풀어나가는 알고리즘 방법이다. 두 번 이상 계산되는 부분 문제를 중복되는 부분 문제 (overlapping subproblems)라고 한다. 이를 한 번만 계산하여 저장하고 다음에는 이 결괏값을 이용해서 풀이하면 된다. 메모이제이션(Memoization) 이미 계산한 값을 저장해두었다가 재활용하는 최적화 기법을 메모이제이션(Memoization)이라 한다. 1) 특정 함수가 호출되었을 때, 배열에 해당 값이 저장되어 있는지 확인. 존재한다면, 해당 값을 return. 2) 존재하지 않는다면, 값을 계산하고 배열에 저장한 뒤 해당 값을 return. - 메모이제이션은 입력이 고정되어 있을 때, 그 결과가 항상 같은 함수, 참조적 투명 함수(referent..

long 자료형 보통 정수는 기본 자료형인 int를 많이 사용한다. 하지만 int의 표현 범위를 넘는 값을 변수에 담아서 사용한다면 long형을 사용해야 한다. int long 저장공간 4byte 8byte 범위 -2147483648 ~ 2147483647 -9223372036854775808 ~ 9223372036854775807 BigInteger 클래스 long형을 넘는 더 큰 범위의 정수를 다룰 때 사용하는 클래스로 java.math에 속한다. int, long과 같은 자료형처럼 사칙연산(+,-,*,/,%)을 기호로 할 수 없고, BigInteger에서 제공하는 메서드를 이용해야 한다. 생성 방법 // 문자열로 생성 BigInteger bigInteger = new BigInteger("12345..
문제 보러 가기 1647번: 도시 분할 계획 첫째 줄에 집의 개수N, 길의 개수M이 주어진다. N은 2이상 100,000이하인 정수이고, M은 1이상 1,000,000이하인 정수이다. 그 다음 줄부터 M줄에 걸쳐 길의 정보가 A B C 세 개의 정수로 주어지는데 A번 집 www.acmicpc.net 이 문제는 MST(최소 신장(스패닝) 트리)를 이용하여 풀 수 있었다. 크루스 칼, 프림 두 개의 알고리즘으로 풀이가 가능했고 나의 경우 프림 알고리즘으로 풀었다. 문제풀이 2개의 도시로 분할해야 하므로 프림 알고리즘을 통해 MST를 만든 후 가장 비용이 높은 간선 하나를 제거하면 2개의 도시로 나눠지고 최소 비용을 구할 수 있다. - 임의의 시작 노드를 Queue에 넣고 연결된 NodeList를 Priori..
이 Exception의 경우 주로 Collection객체를 loop로 다룰 때 발생하게 된다. 나의 경우 Queue를 Iterator를 통해 탐색할 때 발생하였다. Iterator란? : java에서 Collection에 저장되어있는 요소들을 읽어오는 표준화된 방법 중 하나이다. Queue q = new LinkedList(); q.add(1); q.add(2); q.add(3); Iterator iter = q.iterator(); //1. 반복문 안에서 단순히 요소 접근만 함 while(iter.hasNext()){ System.out.println(iter.next()); } iter = q.iterator(); //2. 반복문 안에서 타겟 리스트 객체를 수정함 while(iter.hasNext()..

문제 보러 가기 10775번: 공항 예제 1 : [2][?][?][1] 형태로 도킹시킬 수 있다. 3번째 비행기는 도킹시킬 수 없다. 예제 2 : [1][2][3][?] 형태로 도킹 시킬 수 있고, 4번째 비행기는 절대 도킹 시킬 수 없어서 이후 추가적인 도킹은 불 www.acmicpc.net 이 문제는 유니온 파인드를 이용해 풀이할 수 있는 문제였다. 유니온 파인드를 이렇게 사용할 수 있다는 걸 알았던 문제. 문제풀이 - G개의 게이트 P개의 비행기가 주어질 때 첫 번째 비행기가 아래와 같이 2번 게이트에 도착하게 된다 -조건 1. 각 게이트당 한 개의 비행기만 도착하여 도킹할 수 있음 2. 1~gi의 게이트에 도킹이 가능 ex) 3번 게이트에 도착한다면 1,2,3번 게이트에 도킹 가능 - 이미 2번 ..
- Total
- Today
- Yesterday
- MST
- 삼성 sw역량 테스트
- 채팅
- git
- Spring
- 삼성 sw역량테스트
- 운영체제
- 프로그래머스
- Stomp
- Oracle
- JavaScript
- 완전탐색
- 최소 스패닝 트리
- 알고리즘
- dfs
- programers
- websocket
- BFS
- 정렬
- 코딩테스트
- 자바
- Baekjoon
- Heap
- java
- OS
- sockjs
- DP
- 백준
- SWEA
- 분리 집합
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |