일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Bottom Up
- 도커
- 이진트리
- 피보나치
- BFS
- 웹개발
- 그래프
- 인오더
- 포화이진트리
- JAVA_HOME
- 연결요소
- 1707
- 이분그래프
- 자바
- 프로그래머스
- 바인딩
- 백준
- 완전이진트리
- 11724
- dfs
- 링킹
- 순회
- n진법게임
- 알고리즘
- Java
- 포스트오더
- 동적계획법
- 전공자따라잡기
- DynamicProgramming
- 9093
- Today
- Total
목록개발지식/Algorithm (14)
물음표 살인마
자바로 진법 변환 하는 법 1. 10진수 -> n진수 Integer.toString(int i, int radix) 사용 첫번째 파라미터에 변환할 숫자, 두번째 파라미터에 변환할 진법을 넣으면 된다. 2진수, 8진수, 16진수의 경우 아래 함수도 사용 가능. Integer.toBinaryString(int i) Integer.toOctalString(int i) Integer.toHexString(int i) //변환할 숫자 int num = 22; for (int i = 2; i 10진수 Integer.parseInt(String s, int radix) 사용 //변환할 숫자 int num = 22; for (int i = 2; i = m*t) break; } String answer = ""; for..
트리란? 자료구조의 일종 사이클이 없는 연결 그래프 모든 정점이 연결되어 있어야한다. 정점의 개수: V 간선의 개수: V-1 정점이 n개, 간선이 n개인 경우 -> 사이클이 딱 "1개" 있는 그래프 정점이 n개, 간선이 n-1개인 경우 -> 사이클이 없는 "트리" 이진트리? 자식을 최대 2개만 가지고 있는 트리 포화 이진트리? 리프 노드를 제외한 노드의 자식의 수: 2 리프 노드의 자식의 수: 0 모든 리프 노드의 깊이가 같아야 함. 높이가 h인 트리 노드의 개수: 2^h - 1 완전 이진트리? 리프 노드를 제외한 노드의 자식의 수: 2 리프 노드의 자식의 수: 0 마지막 레벨에는 노드가 일부는 없을 수도 있음. 오른쪽에서부터 몇개가 사라진 형태 트리의 표현 1. 그래프와 같은 방식으로 저장 2. 부모만..
이분그래프란? 위의 그림과 같이 A(검정)/B(회색)로 나눌 수 있는 그래프 A에 포함된 정점끼리 연결된 간선이 없음 B에 포함된 정점끼리 연결된 간선이 없음 A-B 서로를 연결하는 간선만 존재 EX. 수강신청 시 학생과 과목을 연결, 소유물 표현 시 사람과 사물을 연결할 때 등 쓰인다 ----- 이분그래프 관련 문제 https://www.acmicpc.net/problem/1707 1707번: 이분 그래프 입력은 여러 개의 테스트 케이스로 구성되어 있는데, 첫째 줄에 테스트 케이스의 개수 K가 주어진다. 각 테스트 케이스의 첫째 줄에는 그래프의 정점의 개수 V와 간선의 개수 E가 빈 칸을 사이에 www.acmicpc.net import java.util.ArrayList; import java.util..
연결요소란? Connected Component 1~6까지 모든 요소를 하나의 그래프라고 쳤을 때 위의 그림처럼 나누어져 있는 경우가 있다. 이렇게 나누어진 각각의 그래프를 연결 요소라고 한다. 연결 요소의 조건 1. 연결 요소에 속한 모든 정점을 연결하는 경로가 있어야 한다. 2. 다른 연결 요소에 속한 정점과 연결하는 경로가 있으면 안된다. 즉 위의 그림은 2개의 연결 요소로 구성된 하나의 그래프이다. 참고로 연결 요소가 1개인 그래프는 연결 그래프라고 한다. ----- 백준 11724를 통한 연결 요소 실습 https://www.acmicpc.net/problem/11724 11724번: 연결 요소의 개수 첫째 줄에 정점의 개수 N과 간선의 개수 M이 주어진다. (1 ≤ N ≤ 1,000, 0 ≤ ..
그래프 탐색의 목적: 임의의 정점에서 시작하여 연결되어 있는 모든 정점을 한 번씩 방문하는 것. 탐색 방법은 크게 2가지, DFS(깊이 우선 탐색)과 BFS(너비 우선 탐색)으로 나뉜다. 1. 깊이 우선 탐색(Depth First Search) 스택을 이용해 갈 수 있는 만큼 최대한 많이 간다. 더이상 갈 수 없으면 이전 정점으로 돌아간다. 재귀 호출을 이용해 구현 가능 void dfs(int x){ check[x] = true; for(int i = 0; i < a[x].size(); i++){ if(!checked[y]){ dfs(y); } } } 2. 너비 우선 탐색(Breadth First Search) 큐를 이용해 지금 위치에 갈 수 있는 것을 모두 큐에 넣는 방식 큐에 넣을 때 방문했다고 체크..
https://www.acmicpc.net/problem/13023 13023번: ABCDE 문제의 조건에 맞는 A, B, C, D, E가 존재하면 1을 없으면 0을 출력한다. www.acmicpc.net 위 문제를 푸는 방법은 여러가지지만, 인접행렬, 인접 리스트, 간선 리스트를 모두 사용해보기 위한 방법으로 풀어본다. 문제 풀이 1. 간선 리스트를 통해 A, B, C, D를 특정한다. 2. 인접 행렬을 통해 B, C가 친구인지 알아낸다. (인접 행렬이 인접리스트보다 뛰어난 유일한 경우는 두 정점 사이에 간선이 있는지 없는 지 구하는 경우.) 3. 인접 리스트를 통해 D의 친구인 E 가 있는 지 탐색 4. A, B, C, D, E 중 동일인이 없다면 1을 출력 package graph; import j..
그래프 그래프: 정점(Node, Vertex)과 간선(Edge)으로 나타내는 자료구조의 한 종류 그래프 알고리즘의 포인트: "어떠한 문제 상황을 어떻게 그래프로 만들어낼 것인가" 경로(Path): 정점 A에서 B로 가는 경로 사이클(Cycle): 정점 A에서 다시 A로 돌아오는 경로 단순 경로/단순 사이클 같은 정점을 두 번 이상 방문하지 않는 경로/사이클 특별한 언급이 없다면, 일반적으로 말하는 경로/사이클은 단순 경로/사이클이다. 그래프의 종류 - 방향이 있는 그래프 - 방향이 없는 그래프(양방향 그래프) 알고리즘 상에서 방향이 없는 그래프는 모두 방향이 있는 그래프로 바꿔서 저장해야한다. - 간선이 여러개인 경우' 일반적으로 잘 없는 경우이지만, 필요한 간선을 제외하고 삭제하면 된다. ex) 최단 ..