일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 다음 API
- 이분탐색
- 다음 지도 api
- multiset
- 성화봉송
- Segment Tree
- DP
- 안드로이드 스튜디오
- BOJ 2098
- BFS
- 인간이 그리는 무늬
- 외판원 순회
- lower_bound
- MST
- 창훈쓰다
- yolo
- 그리디 알고리즘
- 캘리그라피
- upper_bound
- 영어회화 100일의 기적
- 언어의 온도
- boj
- 위상정렬
- 다이나믹 프로그래밍
- 비트마스크
- 삼성 코딩테스트
- 성화봉송주자
- 생활코딩
- 평창동계올림픽
- 백트레킹
- Today
- Total
목록Honey Night (250)
Hoon222y
int n, b; cin >> n >> b; string ans = ""; //이것도 포인트 ! 추가하는 방식으로 할 수 있음을 알게되었다. while (n > 0) { int r = n % b; if (r < 10) { ans += (char)(r + '0'); //숫자인 경우는 그냥 '0'을 더함으로서 숫자로 넣을 수 있고 } else { ans += (char)(r - 10 + 'A'); // 그 진법을 넘어서 알파벳으로 표현하게 되는경우 -10 +'A'를 해주면 된다. } n /= b; } reverse(ans.begin(),ans.end()); cout
다이나믹 프로그래밍이라는 이야기는 많이 들어보았지만 ... 아직도 잘 와닿지 않고 막상 문제를 풀려고 할 때마다 어려운 부분이 바로 DP일 것이다.거창해 보이는 이름과는 달리 간단하게 생각하여 2가지 조건을 만족한다면 DP로 접근을 한다고 생각하면 쉬울것이다.1) overlapping subproblem (겹치는 부분문제)2) Optimal substructure (최적 부분 구조) 이다.겹치는 부분문제의 경우에는 피보나치 수열을 생각하면 쉽다. 피보나치 수열을 구하기 위해서는 예 n번째 수를 구하기 위해서 n-1, n-2의 값을 구해야 하는것처럼 말이다. 다이나믹 프로그래밍에서는 각 문제를 한번만 풀어야한다. 같은 문제는 구할 때마다 정답이 같기때문이다. 따라서 정답을 한번 구했으면 어딘가에 메모해놓게..
그래프의 탐색은 대표적으로 2가지로 나눌수 있다.1) DFS(깊이 우선 탐색)2) BFS(너비 우선 탐색)두 종류 모두 모든 정점을 1번씩 방문한다는 목표가 있기는 하지만 방문하는 방법에 있어서 차이가 존재한다. 먼저 DFS에 대해 알아보도록 하자. DFS의 경우에는 스텍을 이용하여 갈 수 있는 만큼 최대한 많이 가고, 갈 수 없으면 이전 정점으로 돌아가는 방식이다.위에 그림을 통해 이해를 하자면 원래 스텍에 12345 이렇게 들어있다가 5에서 더이상 갈 곳이 없어서 5가 제거되고 6이 들어온 모습을 나타낸 것이다. 그렇게 4 3 2 1순으로 다시 계속 돌아오는 것이다.보통 DFS의 경우에는 재귀호출을 통하여 구현한다. 코드를 간단하게 작성하자면 12345678void dfs(int x) { check[..
Graph란 자료구조의 일종으로서 정점(Node,vertex)과 간선(Edge)으로 이루어져 있다. G = (V,E) 이렇게 표현을 한다. 이러한 그래프들은 방향이 있는 그래프(유향 그래프)와 방향이 없는 그래프(무향 그래프)로 나눌 수 있다.때때로 간선에 가중치가 주어질 수 있는데 A에서 B 로 이동하는 거리, 이동하는데 걸리는 시간등을 표현할 수 있다. 그래프를 표현할 수 있는 방법은 두가지 정도로 나누어 볼 수있다.1) 인접 행렬을 이용한 표현2) 인접 리스트를 이용한 표현 인접 행렬을 이용한 표현의 경우에는 위의 사진처럼 2차원 배열에 각각의 연결성을 따지는 것이다. 코드로 표현하자면 for (int i=0; i
Tree란 자료구조의 일종으로서 사이클이 없는 그래프라고 볼 수 있다.이때 정점의 개수를 V 개라고 하면 간선의 개수는 v-1개 가 된다.자식을 최대 2개만 가지고 있는 트리를 이진트리라고 한다. 트리를 표현하는 방법은 1) 그래프의 일종이기 때문에 그래프의 표현과 같은 방식으로 저장.2) 트리의 모든 노드는 부모를 하나 혹은 0개를 가지고 있으므로 각각의 부모를 저장하는 방법이 있다.이진트리의 경우에는 다른 그래프들과 달리 배열로 표현이 가능한데 이러식으로 부모의 노드가 x인 경우 자식으 노드는 2x, 2x+1로 표현이 가능하다. 혹은 A[i][0]에 왼쪽자식을 , A[i][1]에 오른쪽 자식을 저정하는 방법을 사용 할 수도 있다. 트리 순회의 종류에는 3가지가 있는데 이런식이다 ㅎㅎ.... 그림 그리..
deque 덱이라고 불리는 자료구조는- stack,queue 와는 다르게 양끝 모두에서 데이터를 넣고 뺄 수 있는 자료구조로- 관련된 연산으로는 push_front , push_back, pop_front, pop_back, front, back가 있다.
queue는 - 한쪽 끝에서만 자료를 넣고 다른 한쪽 끝에서만 뺄 수 있는 구조- 먼저 나온것이 가장 먼저 나오기 때문에 FIFO(first int first out) - 관련 연산으로는 push, pop, front, back, empty, size 연산이 있다. queue는 DFS 인가 BFS 를 하기위해 사용한다. 딱히 .. 음... 뭐... 설명은 간단히 마무리 하도록 하겠다.
[stack] - 한쪽 끝에서 자료를 넣고 뺄 수 있는 자료구조- 마지막으로 넣은것이 가장먼저 나오기 때문에 LIFO(last int first out)라고 한다.- 관련 연산으로는 push, pop, top, empty, size가 있다.push : 스택에 자료를 넣는 연산pop : 스택에서 자료를 빼는 연산top : 스택의 가장 위에 있는 자료를 보는 연산empty : 스택이 비어있는지 아닌지를 알아보는 연산 . 비어있는 경우에는 1은 return, 차있는 경우에는 0 을 return size : 스택에 저장되어있는 자료의 개수를 알아보는 연산. stack을 활용하는 문제가 바로 이런 문제일 것이다. 어떻게 스택이 적용될까 하는 문제이긴 하지만 잘생각해보면 간단한 접근이 될 수있다. ()이렇게 뭉치려..