백준 13325 이진트리 풀이 (feat. JAVA)(R)
·
Algorithm
이거는.. 너무 어려웠다...뭐라는거야 진짜 ㅠ 일단 온종일 붙잡고 최대한 이해하려고 노력함..근데 진짜 더는 머리가 안 돌아감추후에 다시 풀어보자.. /*[백준]13325, 이진 트리[문제파악]- 각 에지에 양수인 가중치가 부여된 높이가 k인 포화이진트리가 주어져 있다.- 높이 k인 포화이진트리는 2k개의 리프를 포함하여 (2k+1 − 1)개의 노드를 가진다.- 루트에서 어떤 리프까지의 거리는 루트에서 그 리프까지의 경로상에 있는 모든 에지들의 가중치를 더한 값이다.- 이 문제에서는, 어떤 에지들의 가중치를 증가시켜서 루트에서 모든 리프까지의 거리가 같도록 하고, 또한 에지 가중치들의 총합을 최소화 하려고 한다.- 예를 들어, 그림 1(a)에 있는 높이 2 인 포화이진트리를 살펴보자.- 에지 옆에 있는..
Queue 구현 시, LinkedList보다 ArrayDeque를 추천하는 이유
·
JAVA
Q를 쓸 때는 LinkedList보단 ArrayDeque를 쓰도록 하자사유는 ArrayDeque가 메모리 사용 & 속도 면에서 더 효율적이기 때문이다- Q는 인터페이스고 이것을 구현하는 구현체가 LinkedList & ArrayDeque가 있음- 근데 ArrayDeque가 메모리 사용 & 속도 면에서 더 효율적이라고 함 (오늘의 핵심)- LinkedList는 참조 객체 관리 비용 때문에 메모리 사용이 높다고...더보기참조 객체 관리 비용이란? 한줄 요약 : 각 노드가 누구를 가리키고 있는지 기억해둬야고, 이것 자체가 관리 비용이라는 것 LinkedList는 각 노드(Node)가 다음/이전 노드를 가리키는 "참조(Reference)"를 저장하는 방식으로 연결됨이것 자체가 추가적인 메모리와 CPU 비용이 발..
백준 2638 치즈 풀이 (feat. JAVA)
·
Algorithm
와! 답보지 않고 잘 풀어냈다!! (드디어!!)이 문제는 아래 순서로 푸는게 팁이었음 (다른 사람들도 이렇게 풀더라 신기...)1) 공기로부터 탐색 시작 (BFS, DFS)2) 치즈를 만나면 따로 저장해둠3) 저장해둔 치즈에서 사방탐색을 시도4) 2면 이상 공기와 접촉 시, 녹임5) 다시 반복 유의할 점은 2면 이상 공기와 접촉했는지 체크할 때, 치즈에게 둘러쌓여 내부로 판정되는 공기는 공기가 아니라는 점!!!이것 때문에 4%에서 계속 터졌다...아래가 반례니 넣어보시면 알듯더보기반례 (내부 공기는 별도로 체크되고 있는지)9 90 0 0 0 0 0 0 0 00 0 0 0 1 0 0 0 00 1 1 0 1 0 1 0 00 1 1 1 1 1 1 0 00 0 1 0 1 1 0 1 00 1 0 1 1 0 1 0..
백준 2263 트리의 순회 풀이 (feat. JAVA)
·
Algorithm
트리의 구조와 원리에 대해 이해하기 좋은데, 내겐 어렵고 오래 걸렸던 문제라 기록하고자 한다트리에 취약했던 나라서 이 문제는 특히 더 오래 걸렸음한줄씩 뜯고 씹고 맛보고 겨우 이해했다디버깅 안하고 이해해서 진행하려니 여간 쉽지 않음...트리 더 열심히 해야지 뭐 ㅠpackage Record_2025;/*[백준]2263, 트리의 순회[문제파악]- n개의 정점을 갖는 이진 트리의 정점에 1부터 n까지의 번호가 중복 없이 매겨져 있다.- 이와 같은 이진 트리의 인오더와 포스트오더가 주어졌을 때, 프리오더를 구하는 프로그램을 작성하시오.[입력]- 첫째 줄에 n(1 ≤ n ≤ 100,000)이 주어진다.- 다음 줄에는 인오더를 나타내는 n개의 자연수가 주어지고, 그 다음 줄에는 같은 식으로 포스트오더가 주어진다...
백준 1068 트리 풀이 (feat. JAVA)
·
Algorithm
반례에 반례에 반례의 꼬꼬물이었던 문제내가 미처 생각하지 못해 터진게 너무 많았고 그로인해 삽질을 너무 많이 했음...진짜 미리 설계랑 고민 좀 하고 코딩하자 ㅠpackage Record_2025;/*[백준]1068, 트리[문제파악]- 트리에서 리프 노드란, 자식의 개수가 0인 노드를 말한다.- 트리가 주어졌을 때, 노드 하나를 지울 것이다.- 그 때, 남은 트리에서 리프 노드의 개수를 구하는 프로그램을 작성하시오.- 노드를 지우면 그 노드와 노드의 모든 자손이 트리에서 제거된다.- 예를 들어, 다음과 같은 트리가 있다고 하자.- 현재 리프 노드의 개수는 3개이다. (초록색 색칠된 노드)- 이때, 1번을 지우면, 다음과 같이 변한다.- 검정색으로 색칠된 노드가 트리에서 제거된 노드이다.- 이제 리프 노드..
윈도우 원격접속 설정하기 (feat. 원격 데스크톱 연결)
·
Window
윈도우 원격 접속 허용을 하려면 아래 순서대로 클릭하면 됨맨날 까먹어서 포스팅했다...
백준 14725 개미굴 풀이 (feat. JAVA)
·
Algorithm
전에 나에게 쓰린 맛을 보여줬던 Trie...그 때 당시 사전식 입출력 문제였고, Trie를 몰라도 TreeMap으로 풀 순 있었다다만 테케 최적화를 실패해 히든 테케에서 시험에서 떨어졌었던 ㅠ 그래서 Trie 보자마자 득달같이 달려들어서 도전했는데 어렵다...이걸 그냥 '아 이론이 이런거구나' 말고 진짜 내가 구현하려니까 뭐 걍 손발 다 꼬임...정리해두고 한번에 소화할 수 있는 문제는 아닌 것 같으니 꾸준히 봐보자 ㅠpackage Record_2025;/*[백준]14725, 개미굴[문제파악]- 우리의 천재 공학자 윤수는 이 개미들이 왜 행복한지 궁금해졌다.- 행복의 비결이 개미가 사는 개미굴에 있다고 생각한 윤수는 개미굴의 구조를 알아보기 위해 로봇 개미를 만들었다.- 로봇 개미는 센서가 있어 개미굴..
백준 15681 트리와 쿼리 풀이 (feat. JAVA)
·
Algorithm
트리구조 배우기에 좋았던 문제와 못 풀겠어!!는 아닌데, 트리 구조에 미숙하다보니 여러 힌트를 참고할 수 밖에 없었다현재는 하나의 노드를 기준으로 DFS (재귀)를 활용하여 서브 트리의 규모를 계속해서 새롭게 count 하고 있다 (메모리 초과)그렇기 때문에 DP를 적용하면 더욱 최적화할 수 있다 package Record_2025;/*[백준]15681, 트리와 쿼리[문제파악]- 간선에 가중치와 방향성이 없는 임의의 루트 있는 트리가 주어졌을 때, 아래의 쿼리에 답해보도록 하자.- 정점 U를 루트로 하는 서브트리에 속한 정점의 수를 출력한다.- 만약 이 문제를 해결하는 데에 어려움이 있다면, 하단의 힌트에 첨부한 문서를 참고하자.[입력]- 트리의 정점의 수 N과 루트의 번호 R, 쿼리의 수 Q가 주어진다..
Certbot 데드라인 확인하기 (feat. certbot 인증 유효기간)
·
Linux
두가지 명령어면 확인할 수 있다 빠르게 가자# 1) certbot 컨테이너 내부로 진입 (docker 환경 아니면 생략하고 2번으로 진행)docker exec -it certbot-container sh# 2) 남은 유효기간 확인 명령어certbot certificates그럼 데드라인을 바로 확인할 수 있다참고로 certbot renew해도 남은 기간이 30일 이내가 아니면 갱신하지 않는단다(해당 명령어는 30일 이내로 만료될 인증서만 갱신함)
Certbot 자동갱신 하기 (feat. Docker & Crontab)
·
Linux
원래는 크론탭이라고 자동갱신을 해둬야하는데 나는 docker로 띄워놔서 크게 상관이 없었다그냥 docker-compose.yml의 entrypoint에 적어두면 되는 것이라서! 그래도 오늘은 두가지 방법 다 어떻게 하는지 포스팅 해보겠다어차피 나 또 나중에 까먹을테니까...0. 각각의 장단점?- Docker-compose에 하면 docker 하나로 다 끝낼 수 있다는 장점이 있다- 근데 반면에 crontab보다 좀 더 귀찮은 것 같다... - crontab(크론탭)으로 하면, 좀 더 쉬운데 Docker 외부 서비스를 쓰게 된다- docker-compose가 꺼져있어도 되는 장점이 있긴함1. Docker로 certbot 자동 갱신하는 방법일단 한줄을 추가하면 된다entrypoint: "/bin/sh -c ..