일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 블록체인
- function
- 코어 이더리움 프로그래밍
- 전문가를 위한 파이썬
- 동시성
- BlockChain
- Python
- RabbitMQ
- Fast API
- 이더리움
- BAEKJOON
- Network
- 파이썬
- guru
- docker
- Algorithm
- rust
- IMAGE
- Kubernetes
- fluent python
- dockerfile
- Thread
- Refactoring
- Container
- AWS
- Ethereum
- 플랫폼
- 러스트
- 백준
- 알고리즘
- Today
- Total
글쓰기 | 방명록 | 관리 |
목록전체 글 (99)
Victoree's Blog
Concept & Idea 코드의 핵심이 되는 플로이드 와샬 코드 부분이다. 간단한 문제이기 때문에 자세한 설명은 생략하도록 하겠다 for(int i=1; in>>m; for(int i=1; i>b; dp[a][b]=1; dp[b][a]=1; } for(int i=1; i
Concept & Idea 당연히 이 문제를 DFS로 풀면 시간초과가 엄청 날 것이다.(1000의 100000승?) 이 문제는 최소 스패닝 트리를 구하는 문제로, Prim 알고리즘을 이용하여 해결할 수 있었다. 우선순위 큐를 문제에서 해결하는 것은 처음이었기 때문에, 다소 생소했으나 대체적으로 큐와 동일하였다. struct node { int x,y,z; bool operator() (node a, node b) { return a.z>b.z; //최소값 우선 노드 } }; 이 노드를 만듬으로써, operator를 통해 comp함수까지 대체할 수 있었다. priority_queue pqu; 이 코드는 priority_queue를 선언하는 코드인데, 첫번째는 queue의 타입, 두번째 변수인 vector는..
Concept & Idea 이 문제는 일단 배열을 사용하여 푸는 문제가 아니라는 점이다. 배열을 잡지 않고도 문제를 해결할 수 있고, 해결해야만 한다. ‘이분탐색을 어떻게 사용할 것인가’를 알아내는 것도 어려운 문제였다. 임의의 mid를 골라서, 해당 mid보다 작은 숫자의 갯수를 파악하여 K번째 수를 구한다. st는 1로 시작하고, end는 k로 끝나는데, 여기서 나는 N^2까지 돌아야 한다고 생각했었다. 왜 k까지 돌리는지는 증명을 통해 알아야내야 할 것 같다. N이 1000보다 커지게 되면, mid/i가 N보다 커질 수 있기 때문에 min(mid/i,N)을 한다. Code #include using namespace std; int n,k; int main(){ cin>>n>>k; int st=1..
Concept & Idea 우선 종유석과 석순을 구분하여 배열에 넣었다. 그리고 lower_bound와 upper_bound를 이용해서 장애물의 수를 count하고 배열에 높이의 수를 기록한다. 마지막에 최솟값을 출력하기 위해서, 원래 포문을 1부터 n까지 돌려야했는데 생각해보니 장애물이 0일수도 있기 때문에 이를 고침으로 맞을 수 있었다. Code #include #include #include using namespace std; int n,h; int map[200001]; vector up, down; int obstacle[200001]; int main(){ cin>>n>>h; for(int i=0; i>map[i]; for(int i=0; i
Concept & Idea 나무자르기 문제를 내가 직접 풀어냈다는 느낌이 약해서 리뷰를 쓰지 않았다. 이 문제는 이분탐색으로 가장 인접한 두 공유기의 최댓값을 찾는 문제였다. 처음에는 이분탐색으로 설치를 하는 방식을 짜야한다고 생각했고, 어떻게 적절한 위치에 설치를 할지 우선순위를 잡아야하나 고민하였다. 하지만 그 어떤 우선순위에도 확실한 과정이 없어서, 질문검색을 통해 아이디어를 찾았다. 중요한 점은 내가 직접 구간을 설정해서 이 구간이 가능한지 여부를 판단하고, 이분탐색으로 이 구간을 정해나가는 것이다. mid라는 구간만큼 공유기를 설치했을 때, 설치가 가능하면 mid값을 더 키우고 불가능하면 더 줄여서 최적의 값을 이분탐색으로 찾아나가는 것이다. 여기서 가능한지의 여부는 그냥 count를 세면 됬었..
Concept & Idea 최대 배열의 크기가 1002, 1002이기 때문에 백트랙킹으로는 문제를 해결할 수 없다. tmp[2][1002] 배열은 좌측에서 오는 값을 기록, 우측에서 오는 값을 기록하는 배열이다. 이런 방식으로도 메모제이션을 진행할 수 있다는,, 잘 기억해두자!! Code #include #include using namespace std; int map[1002][1002]; int dp[1002][1002]; int tmp[2][1002]; int n,m; int main(){ cin>>n>>m; for(int i=1; i