전체 글

전체 글

    22.09.07. 풀었던 문제들

    백준 MST 1774 Building Roads 2887 SVEMIR

    22.09.06. 풀었던 문제들

    백준 단계별 30 union-find 20040 Cycle Game 4195 Virtual Friends 백준 단계별 31 Minumum Spanning Tree 9327 flying safely 1197 최소 스패닝 트 4386 freckles

    22.09.05. 풀었던 문제들

    백준 1976 여행 가자

    [GCP Tutorial] RDP through HTTPs connection using guacamole (feat. GCP)

    대충 원리는.. Proxy와 Remote Client를 이용해 접속할 컴퓨터로 rdp 접속. 이 접속 내용을 guacamole protocol로 tomcat 서버에 뿌리고, web에서 접근 가능한 방식. 나의 경우는 nginx로 proxy도 사용했으니까 web 접속 - nginx proxy - guacamole tomcat 접근 - guacamole이 rdp 접속 이렇게 되는 것 같다. 복잡하기도 해라. 구성은 docker로 할지, 아니면 쌩으로 설치할지, 또 VM은 code-server가 있는 곳에서 할지, 다른 곳에서 할지 고민을 조금 했다. 그런데 GCP 특성상 가격이 [싼 것 2개 < 싼 것 스펙 2배짜리 VM 1개]처럼 되기 때문에 그냥 E2-medium 2개를 쓰기로 했고, 그러면 굳이 여러 ..

    22.09.04. SQLD 자격증 응시

    sqld + 과에서 업무한다고 근2주간은 1일 1문제만 푼 것 같다. 특히 sqld.. 이자식 때문에 7일을 쓴거같은데 너무 아쉽다. 최근에 문제를 거의 못 풀었으니 뭐... 그래도 합격은 가뿐하게 할 것 같다. 당분간은 과카몰리를 이용해 https로 원격 데스크톱이 작동하는지 찾아볼 예정이다.+N2T 작업. - 끝!

    22.09.04. 풀었던 문제들

    백준 1717 집합의 표현 union-find 문제

    22.09.02. 풀었던 문제들

    백준 4803 트리 트리인지 검사하는 문제. tree는 acyclic connected graph임을 인지하고 cycle이 있는지 검사하면 된다

    22.09.01. 풀었던 문제들

    백준 5639 이진 검색 트리

    22.08.30. 풀었던 문제들

    백준 1991 트리 순회

    22.08.29. 풀었던 문제들

    백준 1967 트리의 지름 - 나름 재밌는 문제. 임의로 뽑은 한 vertex가 longest path 중간에 있을 수 있으므로, vertex부터 longest vertex를 뽑고 해당 vertex부터 longest distance를 구하면 된다.

    22.08.28. 풀었던 문제들

    CPS 본선 6번 upsolve

    22.08.26. 풀었던 문제들

    백준 1167 트리의 지름 요새 SQLD한다고 바쁘다.

    22.08.24. 풀었던 문제

    백준 단계별 28 DP와 최단거리 역추적 2618 경찰차 - top-down, bottom-up 둘 다 풀었음. 9019 DSLR 11779 최소비용 - dijkstra 할 때, 같은 edge이지만 cost가 다른 경우. ex) from 1 to 2 weight 10 / from 1 to 2 weight 20 이런 경우가 주어지면, 앞의 edge에 의해 update되고, 이게 최소임에도 불구하고 뒤의 edge에 의해 또 update 여부를 보기 때문에 조금 더 시간이 걸린다. 예외 사항 기억하자. 11780 플로이드 2 - 역시 역추적은 어렵다.

    22.08.23. 풀었던 문제들

    백준 단계별 DP와 최단거리 역추적 13913 숨바꼭질 4 이외에 다른 문제 계속 보고 있는데 잘 안풀린다.

    22.08.22. 풀었던 문제들

    백준 단계별 28 DP와 역추적 14002 LIS 4 14003 LIS 5 - 이 2개는 예전에 푼 적 있었다. 12852 1로 만들기 2 - 답부터 거꾸로 찾아가면 됨. 말 그대로 역추적. void solve(){ int N; cin>>N; int INF = 987654321; vector dp(N+1, INF); vector prev(N+1); // prev[i] : i 이전에 온 수 dp[0] = 1; dp[1] = 0; for(int i = 2; i dp[i/2] + 1){ dp[i] = dp[i/2] + 1; prev[i] = i/2; } } if(i%3 == 0){ if(dp[i] > dp[i/3] + 1){ dp[i] = dp[i/3] + 1; prev[i] = i/3; } } } cout

    Two Pointer, Sliding Window, Meet in the Middle ***TODO

    two pointer 특 : 그냥 포인터 2개 움직이면 됨 sliding window 특 : 크기 고정한 two-pointer임. 주의할 점은 배열의 indexding. meet in the middle 특 : div&conquer인데 1번만 하는 경우임. 주어진 n으로 Brute-Force는 불가능 해 보이지만, n/2로 Brute-Force는 가능해 보일 때 사용하는 기법. 보통 n이 30~50정도일 때 쓸 수 있다. 앞 절반, 뒤 절반으로 나누고 앞 절반으로 뒤 절반을 탐색하면 된다. 그 절반을 정렬해도 $log2^{n/2} = log(n/2)$이기 때문에 $O(2^{n/2} * n/2)$에 풀린다.