b13913. 순간이동 4
·
Algorithm & Data Structures/BOJ
📌 자바(Java)로 푸는 숨바꼭질 4 - 백준 13913🧍‍♂️➡️🧍‍♀️ 최소 시간 + 이동 경로까지 출력하는 BFS 문제! 🔎 문제 개요 백준 13913번 - 숨바꼭질 4는정수 N(수빈이 위치)에서 K(동생 위치)까지다음 세 가지 연산으로 이동해 최소 시간을 구하는 문제입니다. X - 1X + 1X * 2 뿐만 아니라,✔ 최단 시간과 함께✔ 그때의 이동 경로를 정확히 출력해야 합니다! 💡 예제 입력5 17 💡 예제 출력45 10 9 18 17 🛠 알고리즘 접근 방식 이 문제는 전형적인 최단 거리 탐색 → BFS 문제입니다.하지만 경로 추적까지 해야 하므로,✔ 이동 이전 위치를 기록하는 prev[] 배열을 활용해야 합니다. 🔹 Java 코드 설명📌 Node 클래스static clas..
b2618. 경찰차
·
Algorithm & Data Structures/BOJ
https://www.acmicpc.net/problem/2618 📌 자바(Java)로 푸는 경찰차 - 백준 2618 🚓🚓두 경찰차의 최소 이동 거리 + 이동 경로까지 구하는 DP 문제 🔎 문제 개요 백준 2618 - 경찰차 문제는N × N 크기의 도시에 경찰차 2대가 배치되어 있고,여러 사건이 순차적으로 발생할 때두 경찰차가 어떻게 사건을 분담해서총 이동거리를 최소화할 수 있는지를 구하는 문제입니다. 경찰차 1: 항상 (1,1) 위치에서 시작경찰차 2: 항상 (N,N) 위치에서 시작각 사건은 정확히 한 번만 처리해야 하며,각 사건은 경찰차 1 또는 경찰차 2가 처리해야 합니다.💡 예제 입력633 55 52 3 💡 예제 출력9121 총 이동거리: 9각 사건을 처리한 경찰차 번호 출력 🛠..
✍️ 내 코드가 느렸던 이유: LinkedList를 배열로 바꾸고 생긴 일
·
Algorithm & Data Structures/Data Structures
🐣 시작은 코드 비교에서 최근에 백준 14002번: 가장 긴 증가하는 부분 수열 5 문제를 풀다가,다른 사람의 풀이와 내 풀이 사이에서 속도 차이가 유독 크게 나는 걸 발견했다.로직은 같았다.LIS(Longest Increasing Subsequence) 구하고, 실제 수열을 역추적해서 출력한다. 그런데 나는 이렇게 썼다:LinkedList result = new LinkedList();while (idx != -1) { result.addFirst(arr[idx]); idx = prev[idx];}반면, 다른 사람의 코드는 이렇게 배열로 처리하고 있었다:int[] result = new int[length];int pos = length - 1;while (idx != -1) { re..
b14003. 가장 긴 증가하는 부분수열 5
·
Algorithm & Data Structures/BOJ
https://www.acmicpc.net/problem/14003 📌 자바(Java)로 푸는 가장 긴 증가하는 부분 수열 5 - 백준 14003 🔼LIS + 경로 추적을 O(N log N)으로 해결하는 대표 문제 🔎 문제 개요백준 14003번 - 가장 긴 증가하는 부분 수열 5 문제는수열이 주어졌을 때, 가장 긴 증가하는 부분 수열의 길이해당 부분 수열 자체 를 구하는 문제입니다.단, 수열의 길이가 최대 100만 개이므로 O(N²) 풀이 불가능합니다. 💡 예제 입력610 20 10 30 20 50 💡 예제 출력4 10 20 30 50 🛠 알고리즘 접근 방식 ✅ 핵심 전략: 이진 탐색 기반 LIS + 경로 추적 list[]: 현재까지 만든 LIS 수열 (값만 추적)dp[i]: arr..
☁️ AWS S3가 뭐예요?
·
Tool/AWS
비전공자인 본인을 위한 클라우드 저장소 모를만한 개념 정복! 🔍🧳 1. S3? 그냥 “인터넷 외장하드”예요 Amazon S3(Simple Storage Service)는 인터넷에 연결된 외장하드 같은 거다.내 컴퓨터 말고, AWS 데이터센터 어딘가에 내 파일을 저장해주는 서비스다. 사진, 문서, 영상, 백업파일, 로그까지 뭐든 저장할 수 있다.컴퓨터의 ‘폴더’에 저장하는 느낌 OK! 🙆🪣 2. “버킷(Bucket)”이란? 💡 비유: 클라우드 창고 안의 큰 박스 S3 안에서 파일을 보관하려면 버킷이라는 큰 박스에 담아야 한다.이 버킷 하나가 내 “클라우드 외장하드의 폴더”라고 생각하면 돼요. 버킷은 전 세계에서 이름이 유일해야 한다 (도메인처럼 이 여러개가 없는 것 처럼).버킷 만들기는 무료, ..
b14002. 가장 긴 증가하는 부분수열 4
·
Algorithm & Data Structures/BOJ
https://www.acmicpc.net/problem/14002 📌 자바(Java)로 푸는 가장 긴 증가하는 부분수열 4 - 백준 14002 📈최장 증가 부분 수열(LIS)을 구하고, 해당 수열을 출력하라!🔎 문제 개요 백준 14002번 - 가장 긴 증가하는 부분 수열 4 문제는기본적인 LIS(최장 증가 부분 수열) 문제에👉 “LIS 경로까지 출력”이 추가된 버전입니다.💡 예제 입력6 10 20 10 30 20 50 💡 예제 출력4 10 20 30 50 🛠 알고리즘 접근 방식 이 문제는 기본 LIS 문제에서“LIS의 경로를 저장”해야 하기 때문에✔ 단순한 DP 배열뿐 아니라✔ prev[] (이전 인덱스), lastIndex[] (길이별 마지막 인덱스) 추적이 필요합니다. 🔹 핵심..
b12852. 1로 만들기 2
·
Algorithm & Data Structures/BOJ
https://www.acmicpc.net/problem/12852 📌 자바(Java)로 푸는 1로 만들기 2 - 백준 12852 🔢최소 연산 횟수 + 경로 추적까지 하는 DP 문제! 🔎 문제 개요 백준 12852번 - 1로 만들기 2 문제는정수 N이 주어졌을 때,1로 만들기 위해 사용할 수 있는 연산은 다음 세 가지입니다: X → X / 3 (3으로 나누어떨어질 때만)X → X / 2 (2로 나누어떨어질 때만)X → X - 1 최소 연산 횟수를 출력하고그 경로에 해당하는 숫자 순서도 출력해야 합니다. 💡 예제 입력10 💡 예제 출력310 9 3 1 🛠 알고리즘 접근 방식: Dynamic Programming (DP) ✏️ 핵심 전략 dp[i]: i를 1로 만들기 위한 최소 연산 횟수c..
b1450. 냅색문제
·
Algorithm & Data Structures/BOJ
https://www.acmicpc.net/problem/1450   📌 자바(Java)로 푸는 부분 수열의 합 문제 - 백준 1450 🎒 🔎 문제 개요 백준 1450번 - 냅색 문제는최대 N = 30개의 물건이 주어질 때,각 물건의 무게를 더해 총합이 C 이하인 경우의 수를 구하는 문제입니다. 1 ≤ N ≤ 30, 1 ≤ C ≤ 1e9무작정 모든 조합을 돌리면 2³⁰ ≈ 10억 개, 시간 초과 발생❌➡ 그래서 “Meet in the Middle(중간에서 만나기)” 전략을 사용합니다. 🛠 알고리즘 접근 방식: Meet in the Middle  ✏️ 핵심 전략 배열을 반으로 나누고 각각 가능한 부분합의 조합을 모두 구함한 쪽 배열의 조합을 기준으로, 나머지에서 더해도 C 이하가 되는 조합 개수를 ..
b3665. 최종순위
·
Algorithm & Data Structures/BOJ
https://www.acmicpc.net/problem/3665   📌 자바(Java)로 푸는 최종 순위 문제 - 백준 3665 🏆🔁 🔎 문제 개요 백준 3665번 - 최종 순위는 위상 정렬(Topological Sort)을 응용하는 문제입니다. 작년 순위가 주어지고,올해 바뀐 순위 정보들이 입력되며,그 정보를 바탕으로 올해의 최종 순위를 결정하는 문제입니다. 단, 순위를 정확히 하나로 정할 수 없다면 ? 출력모순이 발생해서 순위를 정할 수 없다면 IMPOSSIBLE 출력 💡 예제 입력155 4 3 2 122 43 1 💡 예제 출력5 3 2 4 1  🛠 알고리즘 접근 방식 이 문제는 기본 위상 정렬에✔ 순위가 바뀐 간선을 뒤집는 작업(reverse edge)✔ 정점 진입 차수(indegre..
🚀 진짜 작동하는 GitHub Actions + EC2 CI/CD 배포기
·
Project
아기자기한 EC2 프리미어와 내 배포 자동화 여정 ✨ 글을 쓰게 된 계기 이번에 개인 프로젝트를 진행하면서,“GitHub Actions로 EC2에 자동 배포하는 CI/CD 파이프라인”을 직접 구성했다. 단순히 배포만이 아니라, 테스트 돌리고Jasypt로 비밀번호를 암호화해서 보안도 지키고EC2에 jar 파일을 전송하고앱을 껐다 켜는 것까지 한 번에 처리 하는 걸 목표로 했다.그 과정에서 정말 다양한 시행착오를 겪었고,이 글은 그 실전기록이다. 🎯 목표 코드 푸시 → 테스트 + 빌드 → EC2에 jar 전송 → 앱 재시작DB 접속 정보는 application-prod.yml에 Jasypt로 암호화GitHub Secrets를 통해 민감 정보 관리⚙️ 내가 만든 최종 deploy.ymlname: Deploy..