2025/10/10 10

[ 백준 ] 빗물

🌧️ BOJ 14719 — 빗물 (Java / 구현 + 시뮬레이션)난이도: 골드 5유형: 구현, 시뮬레이션핵심 포인트: 각 칸에서 “왼쪽·오른쪽 최고 높이”를 비교해 물이 얼마나 고이는지 계산📘 문제 개요고층 건물 사이에 비가 내렸을 때,각 칸(기둥 사이)에 얼마나 많은 빗물이 고이는지를 계산하는 문제입니다.🔗 백준 14719번 — 빗물⚙️ 문제 조건항목내용입력H (세로 높이), W (가로 길이)다음 줄W개의 정수 → 각 기둥의 높이출력고인 전체 빗물의 양제약2 ≤ W ≤ 500, 0 ≤ H ≤ 500📥 예시 입력 4 4 3 0 1 4 📤 출력 5 💡 핵심 아이디어각 칸(i) 에 물이 고이려면왼쪽에 자신보다 높은 벽이 있고,오른쪽에도 자신보다 높은 벽이 있어야 합니다.따라서 i번째 칸의 물 높..

Code 2025.10.10

[ 백준 ] 신기한 소수

🔢 BOJ 2023 — 신기한 소수 (Java / DFS + 소수 판별)난이도: 실버 1유형: 백트래킹(DFS), 수학(소수 판별)핵심 포인트: “모든 접두어가 소수인 n자리 수를 만들어라.”📘 문제 개요링크: BOJ 2023 — 신기한 소수N자리의 소수 중에서,앞에서부터 1자리, 2자리, …, N-1자리로 잘라봐도모든 부분이 소수인 수를 모두 구하라.⚙️ 문제 조건항목내용입력N (1 ≤ N ≤ 8)출력조건을 만족하는 “신기한 소수”를 오름차순으로 출력조건모든 접두어가 소수여야 함예시7331 → 7, 73, 733, 7331 모두 소수 ✅💡 접근 아이디어이 문제의 포인트는 **“모든 접두어도 소수”**라는 조건이에요.즉, 4자리 신기한 소수를 만들고 싶다면: 1자리: 2, 3, 5, 7 2자리: 위..

Code 2025.10.10

[ 백준 ] 맥주 마시면서 걸어가기

🍺 BOJ 9205 — 맥주 마시면서 걸어가기 (Java / BFS)난이도: 골드 5유형: 그래프 탐색, BFS핵심 포인트: “편의점에서 맥주를 다시 채우며 도착지까지 도달 가능한가?”📘 문제 개요링크: BOJ 9205 - 맥주 마시면서 걸어가기“맥주 20병을 들고 출발해서, 50m당 맥주 1병을 소비한다.편의점마다 들를 때마다 다시 20병으로 채울 수 있다.출발점 → 여러 편의점 → 목적지까지 ‘맥주가 떨어지지 않고’ 갈 수 있을까?”⚙️ 문제 조건 요약항목내용이동 단위한 병당 50m 이동 가능보충 조건편의점 방문 시 맥주 20병으로 리필입력테스트케이스 T각 테스트시작점, 편의점 N개, 도착점출력happy (도착 가능), sad (불가능)좌표 범위각 좌표는 -32768 ~ 32767 정수거리 계산맨..

Code 2025.10.10

[ 백준 ] 녹색 옷 입은 애가 젤다지?

🗺️ BOJ 4485 — 녹색 옷 입은 애가 젤다지? (Java / 다익스트라)난이도: 골드 4유형: 최단경로, 다익스트라, 그래프(격자)핵심 포인트: 가중치가 있는 격자에서의 최소 비용 경로 → 다익스트라(PQ)📘 문제 개요N×N 동굴 격자(2 ≤ N ≤ 125).각 칸의 값 = 그 칸을 지나갈 때 잃는 루피(0~9).시작: (0,0), 도착: (N-1,N-1).상/하/좌/우 인접 칸으로만 이동 가능.도둑루피 합이 최소가 되도록 이동할 때의 최소 잃는 금액을 구하라.입력은 여러 테스트케이스. N=0이면 종료.출력 형식: Problem k: answer💡 접근 방법이 문제는 가중치가 있는 그래프의 최단경로 문제입니다.각 칸을 꼭짓점(vertex), 인접 칸 간의 이동 비용을 도착 칸의 도둑루피 값으..

Code 2025.10.10

[ 프로그래머스 ] 구슬을 나누는 경우의 수

⚪ 프로그래머스 — 구슬을 나누는 경우의 수 (Java)난이도: ⭐유형: 수학, 조합 (Combination, nCr)핵심 포인트: C(n, r) = n! / (r! * (n - r)!) 공식을 직접 구현하되, long형 누적 계산으로 오버플로 방지📘 문제 개요머쓱이는 balls개의 서로 다른 구슬 중에서share개의 구슬을 순서 없이 선택하려고 합니다.즉, 조합의 경우의 수를 구하는 문제입니다.공식은 다음과 같습니다:C(n,r)=n!r!×(n−r)!C(n, r) = \frac{n!}{r! \times (n - r)!}C(n,r)=r!×(n−r)!n!​⚙️ 제한사항항목값1 ≤ balls ≤ 30 1 ≤ share ≤ 30 share ≤ balls 구슬은 모두 서로 다름 순서는 고려하지 않음 n이 최대 ..

Code 2025.10.10

[ 프로그래머스 ] 행렬의 덧셈

🧮 프로그래머스 — 행렬의 덧셈 (Java)난이도: ⭐유형: 구현, 2차원 배열핵심 포인트: 동일한 인덱스끼리 더하기 — 단순한 이중 반복문으로 해결📘 문제 개요행렬의 덧셈은 같은 크기(행과 열이 동일) 인 두 행렬의 각 원소를 위치별로 더한 것입니다.예를 들어, [ [1, 2], [2, 3] ] + [ [3, 4], [5, 6] ] = [ [4, 6], [7, 9] ] ⚙️ 문제 조건항목내용입력arr1, arr2 — 각각 정수형 2차원 배열제약행과 열의 길이는 500 이하출력같은 크기의 2차원 배열 — 각 원소의 합💡 접근 방법1️⃣ 두 행렬의 행 개수(row) 와 열 개수(col) 는 같음2️⃣ 두 행렬의 각 원소를 같은 인덱스(i, j) 로 접근해서 더하면 됨3️⃣ 이중 for문을 사용하여 모..

Code 2025.10.10

[ 프로그래머스 ] 지그재그로 쌓인 택배 상자 꺼내기

📦 코딩 테스트 — 지그재그로 쌓인 택배 상자 꺼내기 (Java)유형: 구현 → 수학적 최적화핵심 포인트: 지그재그(스네이크) 배치의 “행/열 규칙”만 파악하면, 배열 생성 없이 O(1) 로 답을 구할 수 있다.📘 문제 개요1번부터 n번까지의 상자를 가로 w개씩 층을 올리며 쌓는다.배치는 지그재그:0층(맨 아래) 왼→오, 1층 오→왼, 2층 왼→오 … 반복어떤 상자 num을 꺼내려면, 그 상자 위 같은 열에 있는 상자들을 모두 먼저 꺼내야 한다.꺼내야 하는 상자의 총 개수(자기 자신 포함) 를 구하라.✍️ 예시n=22, w=6, num=8 → 3n=13, w=3, num=6 → 4💡 접근 방법1) 시뮬레이션(직관적 방법)2차원 배열을 만들고 지그재그로 채운 다음,num이 있는 열에서 아래층→위층으로..

Code 2025.10.10

[ 프로그래머스 ] 기둥과 보 설치

🏗️ 프로그래머스 — 기둥과 보 설치 (Java 완전 구현)난이도: ⭐⭐⭐⭐유형: 구현, 시뮬레이션핵심 포인트: 명령을 수행할 때마다 전체 구조물의 안정성을 재검증하는 완전 탐색형 구현📘 문제 개요죠르디는 2차원 벽면 위에 기둥과 보를 이용한 건축물을 세우는 시뮬레이션 프로그램을 만들고자 합니다.주어진 명령(build_frame)을 순서대로 수행하면서, 각 구조물이 아래의 설치 조건을 항상 만족해야 합니다.조건을 위반하는 명령은 무시합니다.⚙️ 설치 규칙 요약✅ 기둥 (a = 0)(x, y) 기준으로 위쪽 방향으로 세워짐바닥 위(y == 0)에 있거나아래에 다른 기둥이 있거나 (pillars[x][y-1])현재 위치((x, y)) 또는 왼쪽((x-1, y))에 보가 있을 경우 설치 가능✅ 보 (a =..

Code 2025.10.10

[ 프로그래머스 ] 광고 삽입

🎥 프로그래머스 — 광고 삽입 (Java / 슬라이딩 윈도우 + 누적합)난이도: ⭐⭐유형: 누적합(Prefix Sum), 슬라이딩 윈도우, 구현핵심 포인트: “시청 로그를 초 단위로 변환하고, 광고 길이만큼의 구간합이 최대가 되는 시점을 찾는다.”📘 문제 개요방송 영상에 공익광고를 넣으려 합니다.시청자들의 시청 로그가 주어질 때, 광고를 시작할 시점을 선택하여총 시청 시간이 최대가 되도록 해야 합니다.🏷️ 입력 예시항목값play_time"02:03:55"adv_time"00:14:15"logs["01:20:15-01:45:14", "00:40:31-01:00:00", "00:25:50-00:48:29", "01:30:59-01:53:29", "01:37:44-02:02:30"]결과"01:30:59"..

Code 2025.10.10

[ 프로그래머스 ] 택배 배달과 수거하기

🚚 프로그래머스 — 택배 배달과 수거하기 (Java / 그리디)난이도: ⭐⭐유형: 그리디(Greedy), 시뮬레이션, 역방향 누적핵심 포인트: 뒤에서부터 부족분(음수)을 누적해 왕복 최소화📘 문제 개요물류창고에서 출발한 트럭이 배달과 수거를 동시에 처리하려고 합니다.트럭은 한 번에 최대 cap개의 상자를 실을 수 있으며,n개의 집 각각에 배달할 상자 수(deliveries[])와수거할 빈 상자 수(pickups[])가 주어집니다.트럭이 모든 배달과 수거를 마치고 창고로 돌아올 때까지의 최소 이동 거리를 구하세요.🏠 문제 조건항목내용1 ≤ cap ≤ 50트럭 적재 한도1 ≤ n ≤ 100,000집의 개수deliveries[i]i+1번째 집에 배달할 상자 수pickups[i]i+1번째 집에서 수거할 상..

Code 2025.10.10