• (백준 알고리즘 문제풀이) 14888번 연산자 끼워넣기

    문제 문제 링크 어떻게 접근할 것인가 연산자 하나를 쓴 상태로 다음 상태로 계속 진행한다. 연산자를 다 사용하면 백트랙해서 다른 연산자를 넣어준다. 연산 결과 최고와 최저를 저장한다. 코드 #include <cstdio> int n, o[4], arr[10], M = -1000000000, m = 1000000000; void find(int cnt, int r){ if(cnt == n){ if(r > M)...


  • (강화학습 입문) 3. 그리드월드와 큐러닝

    4장 강화학습 기초 3: 그리드월드와 큐러닝 이전에 배웠던 다이내믹 프로그래밍으로 학습시키는 것의 한계인 환경을 알아야 한다는 단점을 극복한 강화학습에 대해 알아보자. RL은 에이전트가 환경과 직접 상호작용하며 최적정책을 찾아낸다. 용어 2가지! 예측 : 환경과의 상호작용을 통해서 주어진 정책의 가치함수를 학습시키는 것(몬테카를로 예측, 시간차 예측) 제어 : 학습한 가치함수를 토대로 정책을 끊임없이...


  • (백준 알고리즘 문제풀이) 2110번 공유기 설치

    문제 문제 링크 어떻게 접근할 것인가 어떻게 문제를 풀지 고민을 잔뜩하다가 이분탐색을 쓸 수 있는 방법 조차 떠오르는데 진짜 오래걸렸다. 이것은 이분탐색으로 접근하려면 아래의 경우로 탐색을 진행해야 한다. 최대간격을 기준으로 탐색을 진행하면서 몇개의 공유기가 설치될 수 있는지 c와 비교한다. 이 문제는 공유기를 c개 설치할 수 있는 애들 중에 제일 큰...


  • (백준 알고리즘 문제풀이) 1005번 ACM Craft

    문제 문제 링크 어떻게 접근할 것인가 이것은 바로 순서가 중요한 문제이다. 이럴 때 쓸 수 있는 것 바로바ra로 위상정렬이다. 먼저 정해진 일의 순서대로 인접 노드를 확인하며 incoming edge를 줄여주고 incoming edge가 0인 경우에만 푸쉬를 해준다. 위상정렬은 DAG에서만 가능하기 때문에 Cycle이 존재하지 않으므로 visited를 확인할 필요없이 쭉쭉쭉했다 ㅎㅎ 코드 #include <cstdio>...


  • (백준 알고리즘 문제풀이) 7569번 토마토

    문제 문제 링크 어떻게 접근할 것인가 이전 토마토 코드에서 인풋을 받는 걸 한층 더 추가해주고 bfs에서 검색하는 단계에서 방향을 4개가 아니라 6개가 되게 한다. 코드 #include <cstdio> #include <vector> #include <queue> using namespace std; int main(){ int d[6][3] = { {0,1,0}, {0,-1,0}, {0,0,1}, {0,0,-1}, {1,0,0}, {-1,0,0} }; int X, Y,...