전체보기
22.09.06. 풀었던 문제들
백준 단계별 30 union-find 20040 Cycle Game 4195 Virtual Friends 백준 단계별 31 Minumum Spanning Tree 9327 flying safely 1197 최소 스패닝 트 4386 freckles
[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.02. 풀었던 문제들
백준 4803 트리 트리인지 검사하는 문제. tree는 acyclic connected graph임을 인지하고 cycle이 있는지 검사하면 된다
22.08.29. 풀었던 문제들
백준 1967 트리의 지름 - 나름 재밌는 문제. 임의로 뽑은 한 vertex가 longest path 중간에 있을 수 있으므로, vertex부터 longest vertex를 뽑고 해당 vertex부터 longest distance를 구하면 된다.
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.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)$에 풀린다.
2022 Google Kick Start Round E 참가 (22.08.20.)
1번은 간단한 직관으로 풀 수 있는 문제, n/5 + (n%5 == 0 ? 0 : 1)이었다. 2번은 binary search (upper bound)로 풀면 되는 문제였다. 다만 자기 자신이 나올 경우 예외처리를 해야 했었다. 3번은 palindrome matching 문제였다. 주어진 string에서 [0, 1~n/2]의 substring을 탐색해서 이게 palindrome이고 전체 반복된다면 이게 답이었다. n의 약수는 logn에 수렴하기 때문에 시간 내에 풀 수 있는 문제. 4번은 굉장히 복잡한 DFS 구현 문제였다. 조건이 [피자 배달 여부, 돈, 시간] 이렇게 3개였는데 상하좌우+제자리 대기 해서 각 탐색이 5^n이었고, DFS로 구현하면 안 되는 문제였다. 나중에 얘기 들어보니까 state를..
2022 군장병 코딩경진대회 참가 (22.08.19.)
1번 - 간단한 greedy + simulation 구현 문제 2번 - 문제 조건을 그대로 구현하면 되는 문제. map을 쓰면 되었다. 3번 - 아주 복잡했던 구현 문제. 4 by 4여서 전수탐색 DFS로 구현하면 되었는데, 구현하면서 신경 쓸 것이 너무 많아 결국 시간내에 풀지 못했다. 간단히 설명만 하자면 grid의 edge에서 dfs를 하면서, 사각형에는 n개의 edge개만 인접할 수 있는 조건이었는데 못 풀었다. 4번 - 3차원 DP 문제? 아마도. 아마 2솔한 것 같다.
2022 SCPC 1차 예선 참가 (22.07.15.)
1번 문제 건들다가, 증명을 못 해서 실패했다. 근데 내가 생각했던 직관이 맞았고 증명 과정에서 오류가 생긴 것이었음. 으악.
2022 UCPC 예선 참가 (22.07.02.)
뭔가 풀 수 있었던 것 같은데 못 풀었던 문제. 결과적으로 0솔이다... 추후에 upsolving하면서 풀었다. 25319 Twitch Plays VIIIbit Explorer - DFS로 푸는 문제였다.
22.08.20. 풀었던 문제들 - Codeforces #786 Div. 3 4/7
Codeforces #786 Div. 3 https://codeforces.com/contest/1674 Dashboard - Codeforces Round #786 (Div. 3) - Codeforces codeforces.com 결과 언제쯤 4/7의 벽을 통과할까. 그리고 C번 - 문제 이해를 잘못해서 뇌절을 좀 했다. D번도 직관으로 풀다가 틀려서 논리로 풀었고. 음.. 문제 풀 때, 완벽하게 증명된 경우에만 코드로 옮기는 걸 해야겠다. A번 문제에 낚였다. 주어진 조건이 10^9를 초과하지 않는 a, b를 구하라길래 sqrt 쓸 준비 하고 있었는데, x와 y가 둘 다 100보다 작다. 즉슨, a는 무조건 1로 두고 b는 y/x로 두면 된다는 말이다.... ll STANDARD = 100000000..
22.08.19. 풀었던 문제들
2022 군장병 코딩경진대회 총 4문제였다. 1번 문제는 greedy한 simulation 문제 2번 문제는 문제 조건을 그대로 구현하는 문제 3번은 DFS + 구현 문제였다. DFS 자체는 어렵지 않았는데 세부 구현이 너무 귀찮게 했다. 4번은 못풀었다.(보지도 못했다)
[Java Tutorial] Ubuntu Java 개발환경 세팅
Java로 동작할 Project N2T를 위한 개발환경 세팅이다. 1. JDK 설치 및 환경변수 설정 JDK 설치 Code Server는 이미 올라가 있는 상태. extension에서 Extension Pack for Java를 설치한다. 다음으로 아래 명령어를 입력해 JDK를 설치할 것이다. 나는 Java 관련 VS Code extension이 17 이상을 허용해서 17을 설치했다. sudo apt install openjdk-17-jdk 설치 확인을 해 보자. $ java --version openjdk 17.0.16 2022-07-19 OpenJDK Runtime Environment (build 11.0.16+8-post-Ubuntu-0ubuntu118.04) OpenJDK 64-Bit Serve..