일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 2021
- python 강좌
- 라즈베리파이3
- BOJ
- 알고리즘
- mmdetection
- 파이썬 강좌
- it
- 라즈베리파이 모니터
- dp
- 철학
- 강좌
- 프로그래밍
- 공부
- 자작시
- 강의
- 백준
- 다이나믹프로그래밍
- 머신러닝
- 파이썬 강의
- mmcv
- 2020
- dynamic programming
- python 강의
- 계획
- 라즈베리파이
- 파이썬
- python
- C++
- IOT
- Today
- Total
목록
분류 전체보기
(105)
반응형
Stargazer
접근: 트리를 이용해서 푸는 문제 트리를 순회하는 순서만 생각하면 된다. 전략: 우선 트리 저장을 배열 형태로 저장하는데, 저장 방식은 다양하나 나는 각 알파벳을 숫자로 치환해서 저장하도록 하겠다. (공간을 많이 잡아먹지 않는 문제이기 때문에, 편한 대로 쓰도록 하겠다. 즉, 최적화된 건 아님) 순회할 때 필요한 정보는 현재 위치와 자식 노드의 유무이다. 구현: #include #include using namespace std; struct Node{ int left; int right; }; vector nod; int n; int c2n(char a){ return (a != '.') ? static_cast(a - 'A') : -1; } char n2c(int a){ return (a + 'A')..
접근: 일반적으로 계산하면 시간 초과가 뜨는 문제이다. 반복적으로 더해주는 작업을 하는 것이기 때문에 DP로 접근하여서 푸는 것이 적절해 보인다. 전략: 구간 합을 입력 받을 때 마다 (0,0) 부터 (x2,y2)를 구해주어 2차원 배열로 저장하고, 구간 합이 주어지면 구해준 구간 합의 조합{(0,0) ~ (x2,y2)}으로 해결해주면 된다. (x1 - 1 , y1 - 1) (x1 - 1, y2) (x2 , y1 - 1) (x2 , y2) 구하고자 하는 값이 (x1,y1)부터 (x2,y2) 까지의 구간 합 이므로, (x2, y2) - (x1-1 ,y2) - (x2 ,y1-1) + (x1 - 1 , y1 - 1) 이런식으로 구해준 값으로 겹치는 영역을 빼고 더해주면 원하는 구간의 값이 나온다. 구현: #i..
접근 이름부터 플로이드 이지만, 단순히 문제만 바라보면, 도시의 가장 빠른 길을 찾는데, 모든 도시를 대상으로 찾아야 한다. 이렇게 모든 대상에 대해서 최단 경로를 구하려면, 플로이드 워셜(Floyd-Warshall) 알고리즘을 이용하면 된다. 그렇지만 나는 이 알고리즘을 제대로 이해하지 못해서 다른 방식으로 해결했다. 전략 플로이드 워셜 알고리즘의 전략은 각 정점을 조사해서 해당 정점을 사이로 지나는 두 정점을 찾아서 만약 더 짧은 거리이면 짧은 거리로 갱신한다(두 정점의 직접 경로가 없는 건 ∞ 로 가정) 본인은 잘못 이해 해서 시간 복잡도가 조금 더 증가했다. 각 도시 간 거리를 매트릭스의 형태로 저장해서 각 행에 대해서 조사를 하는데, 만약 경로가 있는 도시가 있다면, 그 도시로부터 다른 도시를 ..
#include #include using namespace std; int n, k; // n: 물품의 수, k: 버틸 수 있는 무게 int DP[101][100001]; int W[101]; int V[101]; int main() { ios::sync_with_stdio(false); cin.tie(0); cin >> n >> k; for (int i = 1; i > W[i] >> V[i]; } for (int i = 1; i
접근 3가지의 선택: -1, +1, x2 그리고 가장 작은 weight를 가지는 길을 찾아야 한다. 그래서 일단은 너비 우선 탐색을 선택했다. 왜냐하면 가장 짧은 길을 탐색하기 위해서 너비를 우선으로 탐색해야 하기 때문이다. 그렇게 하기 위해 큐를 이용하기로 했다. 그리고 가중치가 0,1 로 다르기 때문에 다익스트라 알고리즘을 이용하기로 했다. 전략 큐에 n의 위치를 넣고, 3가지 선택 중에 선택을 할 수 있는 조건을 만족하면(범위 내 이고, 가중치가 더 작으면) 선택을 하여 큐에 삽입을 한다. 이때, 중요한 건 선택 순서가 중요한데, 2배를 하면 가중치가 0이기 때문에, 3가지 중에 2배를 하는 것을 먼저 선택하도록 순서를 정해야, 최소의 가중치를 구할 수 있다. 방향성이 음수로 가는 방향은 -1 밖에..
요즘 코딩 하다보면 한글 경로를 사용해서 오류 생기는 일이 비일비재 해서 그냥 user 폴더를 영어이름으로 바꾸었다. 그러자 컴퓨터가 맛이 가기 시작했다. 대표적으로 vscode의 업데이트 오류, 재설치 오류 였다. 뭐가 문제인지는 모르겠는데, 재설치하려면, config폴더를 삭제하고 새로운 setup파일을 다운받아서 설치해야한다. go to %UserFolder%\AppData\Roaming\Code and delete the whole folder. Then uninstall and install it again. -> 해당 경로로 가서 폴더를 삭제하고 다시 설치하면 된다. 해결 레퍼런스: https://answers.microsoft.com/en-us/windows/forum/all/cant-ins..
수업을 듣는데 종종 녹강으로 올려주시는 경우가 많은데, 그 중에는 onedrive에 올려주시는 교수님들이 간혹 계신다. 그런데 이 놈에 onedrive로 올려주신 줌 녹화 강의는 배속을 할 수 없게 아예 설정 자체가 존재하지 않는다. 이럴때 너무 답답해서 넘기면서 듣기도 힘들다. 이럴때 필요한게 Video speed controller다. ↓ 다운로드 링크 Video Speed Controller Speed up, slow down, advance and rewind HTML5 audio/video with shortcuts chrome.google.com 위 링크에서 확장프로그램을 추가 하면 사용 준비 끝이다. 우측에 확장프로그램 중에서 video speed controller를 누르고, setting..
나같은 경우 insert 명령을 실행할때 발생하였는데 insert into instructor select ID, name, dept_name, 10000 from student where tot_cred > 100 에러는 아래와 같이 난잡하게 나왔다. ora-02290: check constraint (sql_itesassnyawjbuwugikoypmrd.sys_c0082514345) violated ora-06512: at "sys.dbms_sql", 그냥 간단히 정리하면 sql_itesassnyawjbuwugikoypmrd -> 시스템 소유자 sys_c0082514345 -> 제약조건이름 이게 알고보니 테이블 생성시에 제약조건을 설정하는 구간이 있었다. 문제의 제약조건은 salary > 29000 ..
단순 합병 문제: 두 시퀀스 A, B를 오름차순으로 주어진다고 할때, 두 시퀀스를 하나로 합병한, 정렬된 시퀀스 C를 구하라(C 크기 = n) 합병 전략: A,B의 최소값 중 더 작은값을 C에 넣는데, 만약 최소값이 A 에 있다고 가정하면, A의 최소값을 C에 넣고, A의 나머지와 B, 그리고 C 를 재귀적으로 함수를 호출하여 합병을 한다.(분할 정복) 합병 수도코드: Merge(A,B,C) if(A is empty) rest of C = rest of B else if(B is empty) rest of C = rest of A else if (first of A
추가 공간을 일반 퀵소트보다 줄이는 알고리즘 추가 공간: $O(n)$->$O(1)$( 재귀적일때는 $O(lgn)$을 사용) 전략은 이전 퀵소트와 같이, 분할 정복을 이용할 것이다. 다만 공간을 추가적으로 사용하지않고, 해야하므로, 요소끼리 스위칭하는 방식으로 해야한다. In-place Quick sort 수도코드: Algorithm inPlaceQuickSort S, l, r Input sequence S , ranks l and r Output sequence S with the elements of rank between l and r rearranged in increasing order if l >= r return i