
백준 문제 URL문서를 하나 뽑는다. 해당 문서의 중요도를 확인한다. 남은 큐의 문서들의 중요도를 확인한다. 중요도가 더 높은 문서가 있다면, 현재 문서를 큐의 뒤로 보낸다. 중요도가 더 높은 문서가 없다면, 출력(=완료) 한다. 큐의 구조 설계중요도 배열과

백준URL1부터 N까지의 사람을 Deque에 넣는다.K번째 사람을 제거해야 하므로,K-1번 동안 큐의 맨 앞 원소를 맨 뒤로 보낸다 (pollFirst → offerLast).K번째 사람이 Deque의 맨 앞으로 오면, 제거 후 출력에 추가한다.Deque가 빌 때까지

백준 문제 URL파일 개수 N을 입력받는다.N개의 파일명을 순차적으로 읽어들인다.각 파일명에서 .을 기준으로 확장자만 추출한다 (StringTokenizer 사용).TreeMap에 확장자를 key, 파일 개수를 value로 저장:존재하는 확장자: value + 1새로운

백준 문제 URL상근이 카드 개수 N과 카드 번호들을 입력받는다.HashSet에 상근이 카드 번호들을 저장 (순서 무관, 중복 제거).검증 카드 개수 M과 검증할 카드 번호들을 입력받는다.각 검증 카드에 대해 HashSet.contains()로 소유 여부 확인:있음:

프로그래머스 문제 URL가져갈 수 있는 폰켓몬 수 p_num = nums.length / 2 계산.HashSet에 전체 폰켓몬 번호를 저장 (중복 자동 제거).HashSet.size()로 고유 종류 개수 확인.고유 종류수 vs p_num 중 작은 값 반환:종류가 많으면

프로그래머스 문제 URL전화번호 목록에서 접두어 문제 해결주어진 전화번호 목록에서 한 번호가 다른 번호의 접두어인 경우가 있는지 확인함.입력phone_book: 전화번호 문자열 배열 (1 ≤ 길이 ≤ 1,000,000)각 번호 길이: 1 ≤ 20자리 예를 들어, →

프로그래머스 문제 URL숫자 배열을 문자열 배열로 변환 (String.valueOf()).특별 비교자 (b+a).compareTo(a+b)로 내림차순 정렬:A+B vs B+A 비교 → 더 큰 문자열이 앞에 오도록StringBuilder로 정렬된 문자열들을 앞에서부터 결

백준 문제 URLN과 M (1)은 기본적인 백트래킹(permutation) 문제로,1부터 N까지의 숫자 중에서 중복 없이 M개를 선택해 나열하는 모든 경우의 수를 출력해야함입력: N, M 출력: 1부터 N까지 중 M개의 수를 고른 모든 순열 핵심 개념: DFS(D

- 백준 문제 URL 겹치는 선분들을 합쳐서 최소 총 길이를 구하는 문제 n개의 선분이 주어질 때, 겹치는 선분들을 병합하여 최종 선분들의 총 길이를 구함. 문제 접근 입력 첫 줄에 선분 개수 $$n$$ (1 ≤ n ≤ 1,000,000) 다음 $$n$$줄

백준 문제 URL업로드중..겹치는 선분들을 합쳐서 최소 총 길이를 구하는 문제n개의 선분이 주어질 때, 겹치는 선분들을 병합하여 최종 선분들의 총 길이를 구함.입력첫 줄에 선분 개수 $$n$$ (1 ≤ n ≤ 1,000,000)다음 $$n$$줄에 각 선분의 시작점 $$

백준 문제 URLm 이상 n 이하의 모든 소수를 출력하는 문제주어진 범위에서 에라토스테네스의 체를 이용해 효율적으로 소수를 구함.입력첫 줄에 m n (1 ≤ m ≤ n ≤ 1,000,000)m 이상 n 이하의 모든 소수를 출력해야 함.예를 들어, 입력 시, 출력은 3

백준 문제 URL집 n개에 공유기 c개를 설치해 최소 거리 최대화하는 문제집 위치가 주어질 때, 공유기 c개를 설치하여 인접 공유기 간 최소 거리를 최대화함.입력첫 줄에 n c (2 ≤ c ≤ n ≤ 200,000)다음 n줄에 집 위치 (1 ≤ x ≤ 10^9) 예를

- 프로그래머스 문제 URL 매일 점수가 들어올 때, “명예의 전당(상위 k개)”의 최하위 점수(= k등 점수)를 기록하는 문제 i번째 날까지의 점수 중 상위 k개만 유지하고, 그중 가장 낮은 점수를 answer[i]에 저장한다. 문제 접근 입력 k : 명예의

프로그래머스 문제 URL야근 n시간 동안 작업량을 줄여 “야근 피로도(제곱합)”를 최소화하는 문제작업량 배열 works가 주어질 때, 매 시간마다 작업량 1을 줄일 수 있고(0 미만 불가), 최종 피로도 (sum worksi^2)가 최소가 되도록 만든다.입력n : 남은

백준 문제 URL정점 개수 n, 간선 개수 m, 시작 정점 v가 주어질 때,DFS로 방문한 순서BFS로 방문한 순서를 각각 한 줄씩 출력하는 문제다.단, 방문할 수 있는 정점이 여러 개면 번호가 작은 정점부터 방문해야 한다.그래프 입력은 간선 목록으로 들어오지만, 탐색

백준 문제 URL정점 1..N으로 이루어진 무방향 그래프가 주어졌을 때, 그래프가 몇 개의 “덩어리(연결된 그룹)”로 나뉘어 있는지 세는 문제다.어떤 정점 A에서 B로 경로가 존재하면 같은 연결 요소(같은 그룹)서로 갈 수 없는 정점끼리는 다른 연결 요소출력은 “연결

백준 문제 URLn가지 동전이 주어질 때(각 동전은 무한히 사용 가능), 합이 k원이 되도록 만들면서 사용한 동전 개수의 최솟값을 출력하는 문제다만약 k원을 만들 수 없다면 -1을 출력한다.이 문제는 “현재 금액을 만들기 위해, 이전에 만들었던 금액의 최적해를 재사용”

백준 문제 URLn개의 물이 새는 위치(구멍 좌표)가 주어질 때, 길이가 l인 테이프로 모든 구멍을 막기 위해 필요한 테이프 개수의 최솟값을 출력하는 문제다.테이프는 구멍을 중심으로 일정 구간을 덮을 수 있고, 구멍 위치들이 주어졌을 때 “최소 몇 개를 붙이면 전부 커

프로그래머스 문제 URL전체 학생 수 n이 주어지고, 체육복을 도난당한 학생 목록(lost) 과 여벌이 있는 학생 목록(reserve) 이 주어질 때, 체육수업을 들을 수 있는 학생 수의 최댓값을 구하는 문제다.학생은 자기 번호 기준으로 앞/뒤 학생(번호 차이 1) 에

백준 문제 URL루트가 1인 트리가 주어질 때, 각 노드의 부모 노드 번호를 출력하는 문제다.입력은 N(노드 개수)과 N-1개의 간선으로 주어지고, 출력은 2번 노드부터 N번 노드까지의 부모를 한 줄에 하나씩 출력한다.트리는 사이클이 없지만, 입력은 “부모/자식 방향

백준 문제 URL5×5 숫자판에서 임의의 칸에서 시작해서, 상/하/좌/우로 5번 이동(총 6자리 문자열 완성)하며 숫자를 이어 붙인다.이렇게 만들어질 수 있는 서로 다른 6자리 수의 개수를 구하는 문제다.DFS + Set이 문제는 “모든 시작점(25개)에서, 매 이동마

백준 문제 URL수빈이의 현재 위치 n에서 동생 위치 k로 이동하려고 한다.한 번에 할 수 있는 이동은 딱 3가지다.x -> x - 1x -> x + 1x -> x \* 2이때 동생을 찾는(= k에 도달하는) 최소 시간(최소 이동 횟수) 을 출력하는 문제다.이 문제는

백준 문제 URL사람 수 n이 주어지고, 촌수를 계산해야 하는 두 사람 nodeA, nodeB가 주어진다.이후 m개의 부모-자식 관계(간선)가 주어질 때, 두 사람 사이의 촌수(최단 거리) 를 구하는 문제다.두 사람이 연결되어 있지 않다면 -1을 출력한다.이 문제는 “

프로그래머스 문제 URLmaps는 2차원 격자(게임 맵)이고, 1은 이동 가능, 0은 벽(이동 불가)이다.시작점 (0,0)에서 도착점 (n-1,m-1)까지 최단거리(최소 칸 수) 로 이동할 때의 거리를 구하는 문제다.도착할 수 없으면 -1을 반환한다.이 문제는 “상/하

프로그래머스 문제 URL정점 개수 n과 간선 정보 edge가 주어질 때, 1번 노드로부터 가장 멀리 떨어진 노드의 개수를 구하는 문제다.거리의 기준은 “간선 개수(=이동 횟수)”이고, 연결 그래프라는 전제에서 BFS로 최단거리를 구하면 된다.이 문제는 “모든 간선의 비

프로그래머스 문제 URL정수 n이 주어질 때, 1칸 또는 2칸씩만 뛸 수 있다고 하면 도착 지점까지 갈 수 있는 경우의 수를 구하는 문제다.정답은 매우 커질 수 있으므로 1234567로 나눈 나머지를 반환한다.n칸에 도착하는 방법은 마지막 이동 기준으로 딱 두 가지뿐이

백준 문제 URL계단이 n개 있고 각 계단에는 점수(score\[i])가 있다.규칙을 지키면서 마지막 계단 n에 반드시 도착할 때 얻을 수 있는 최대 점수를 구하는 문제다.한 번에 1칸 또는 2칸 이동 가능연속 3칸(3개의 계단)을 모두 밟을 수 없음마지막 계단은 반드

백준 문제 URLN개의 집이 일렬로 있고, 각 집을 빨강/초록/파랑(3가지) 중 하나로 칠할 때의 비용이 주어진다.단, 인접한 두 집의 색은 같으면 안 된다는 조건을 만족하면서, 전체 비용의 최솟값을 구하는 문제다.각 집을 어떤 색으로 칠할지 선택할 때, 현재 집의 선

프로그래머스 문제 URL삼각형 모양의 triangle 배열이 주어질 때, 맨 꼭대기에서 맨 아래까지 내려가며 얻을 수 있는 최대 합을 구하는 문제다.각 칸은 아래의 왼쪽 아래 / 오른쪽 아래 중 한 칸으로만 내려갈 수 있다.각 칸의 최대합은 “그 칸에서 내려갈 수 있는

백준 문제 URLn줄짜리 3열 숫자 배열이 주어질 때, 맨 위에서 맨 아래까지 내려가며 얻을 수 있는 최대 점수와 최소 점수를 각각 구해서 "최대 최소" 형태로 출력하는 문제다.이동은 자기 바로 아래 또는 양 옆 아래 3방향으로만 가능하다.각 열의 점수는 “이전 줄의

백준 문제 URL수열이 주어질 때, 그 안에서 증가하는 부분 수열 중 가장 긴 길이를 구하는 문제다. 부분 수열은 원래 순서를 유지하면서 몇 개의 수를 골라 만든다. 단, 증가해야 하므로 뒤로 갈수록 숫자가 커져야 한다. 단순히 부분 수열을 나열하는 게 아니라,

백준 문제 URL수열이 주어질 때, 그 안에서 증가하는 부분 수열 중 가장 긴 수열의 길이와 해당 수열 자체를 구하는 문제다. 즉, 단순히 LIS의 길이뿐만 아니라, 그 수열의 실제 원소까지 출력해야 한다.출력 형식은 순서로 요구된다.기본적인 LIS(가장 긴 증가하

백준 문제 URL각 물건에는 무게(W)와 가치(V)가 주어진다.배낭에는 최대 K 무게까지 물건을 넣을 수 있는데,이때 얻을 수 있는 가치의 최댓값을 구하는 문제다.단, 각 물건은 한 번만 넣을 수 있다.즉, 0-1 배낭 문제(0-1 Knapsack Problem)을 그

프로그래머스 문제 URL현재 피로도 k와 여러 개의 던전들이 주어진다.각 던전은 입장에 필요한 최소 피로도와 소모 피로도로 구성되어 있다. 가능한 한 많은 던전을 탐험했을 때의 최대 탐험 가능 던전 수를 구하는 문제다. 먼저 떠올릴 수 있는 방법은 단순히 “들어갈

백준 문제 URL시험까지 남은 총 공부 시간 T가 주어지고,각 단원마다 공부에 필요한 시간(K) 과 얻을 수 있는 점수(S) 가 주어진다. 공부할 수 있는 시간의 총합이 T를 넘지 않도록 단원들을 선택했을 때,얻을 수 있는 최대 점수를 구하는 문제다. 즉, 이 문제

백준 문제 URL호텔에 투숙 고객을 늘리기 위해 n개의 도시에서 광고를 진행하려 한다.각 도시의 광고에는 비용(cost) 유치 가능한 고객 수(value)가 주어진다. 목표는 최소 비용으로 c명 이상의 고객을 유치하는 것이다.단, 각 도시의 광고는 여러 번(무한히

백준 문제 URL양의 정수로 이루어진 수열이 주어지고,두 수를 더했을 때 특정 값 x가 되는 쌍의 개수를 구하는 문제다. 즉, 주어진 배열 arr 중에서 서로 다른 두 수의 합이 x인 경우의 수를 세면 된다.이 문제는 브루트포스(이중 for문) 로 풀면 시간 복잡

백준 문제 URL산성(-)과 염기성(+) 용액이 섞여 있다.두 용액을 섞었을 때, 특성값의 합이 0에 가장 가까운 값을 만드는 두 용액의 특성값을 출력하는 문제다.즉, 배열 arr에서 두 수를 선택해 |arri + arrj| 의 최소값을 만들고, 그때의 두 수를 출

백준 문제 URL수열에서 두 수의 차이가 m 이상이면서,그 차이값이 최소가 되는 두 수의 차이를 구하는 문제다. 즉, 배열 arr에서 arr\[i] - arr\[j] >= m (i > j)을 만족하는 최소 (arri - arrj) 값을 찾는다.이 문제는 단순히 모

백준 문제 URL연속된 k일 동안의 온도 합이 가장 큰 값을 구하는 문제다. 즉, 배열 dayTemp에서 길이가 정확히 k인 연속된 부분합의 최대값을 찾아야 한다.이 문제는 단순히 모든 연속 구간을 확인하면 (O(n^2))이 되지만,슬라이딩 윈도우(Sliding

프로그래머스 연속 수열 문제 링크주어진 배열에서 연속된 부분 수열의 합이 k가 되는 구간을 찾고,그 중 길이가 가장 짧은 구간의 시작, 끝 인덱스를 반환하는 문제다. 즉, 여러 개의 답이 있을 수 있으므로, 길이가 가장 짧은 것을 우선하고, 그 중 가장 앞쪽에 위

백준 문제 URL주어진 배열에서 연속된 부분 수열의 합이 정확히 target이 되는 경우의 수를 구하는 문제다. 즉, 배열 arr에서 어떤 i ≤ j에 대해 arr\[i] + arr\[i+1] + ... + arr\[j] = target 인 구간의 개수를 반환한다

프로그래머스 등차수열의 개수 문제 링크1부터 시작하는 연속된 자연수들의 합이 정확히 n이 되는 경우의 수를 구하는 문제다. 즉,1 + 2 + ... + k = n 또는 3 + 4 + 5 + ... + m = n 같은 형태로연속된 자연수들의 합이 n이 되는 모든 경우의

백준 문제 URL각 지방이 요청한 예산이 있고,총 예산 한도 내에서 모든 지방에 동일한 상한액을 배정할 때,최대 가능한 상한액을 구하는 문제다.즉, 각 지방 arr\[i]에 min(요청액, 상한액)을 배정 총합 ≤ 총예산이 되는 최대 상한액을 찾는다."모든 지방에

백준 문제 URL막대 과자 n개와 조카 m명이 있다.과자를 잘라서 조카 한 명당 동일한 길이의 과자 조각을 주되,한 명당 받는 과자 조각의 최대 길이를 구하는 문제다.즉, 과자 길이 snack\[i]를 길이 mid로 자르면 snack\[i] / mid 조각 생성 총

백준 문제 URL입국 심사대 n개가 있고, 각 심사대마다 1인당 소요 시간이 다르다.입국 대기열에 m명이 줄을 서있을 때, 모든 사람이 심사를 받는 데 필요한 최소 시간을 구한다.즉, 심사대 i는 시간 times\[i]마다 1명 처리 총 m명을 모두 처리하는 최소

백준 문제 URL(N \\times N) 지도에서 1은 집, 0은 빈 칸을 의미한다.상하좌우로 연결된 1들의 묶음을 하나의 단지로 보고, 단지 개수와 각 단지에 속한 집의 수를 오름차순으로 출력하는 문제다.이 문제는 격자에서 연결 요소(Connected Componen

백준 문제 URL서로 다른 커피가 N개 있고, 각 커피는 카페인 양이 정해져 있다몇 개의 커피를 골라 카페인 합을 정확히 K로 만들 때, 마셔야 하는 커피 개수의 최솟값을 구하는 문제다만약 정확히 K를 만들 수 없다면 -1을 출력한다각 커피는 한 번만 선택 가능하므로,

백준 문제 URL(M times N) 크기의 상자에 토마토가 들어있고, 익은 토마토(1)는 하루가 지나면 상하좌우의 익지 않은 토마토(0)를 익게 만든다모든 토마토가 익을 때까지의 최소 날짜를 출력하고, 끝까지 익지 못하는 토마토가 있으면 -1을 출력한다.처음부터 모두

백준 문제 URL토마토를 보관하는 상자가 (H)층으로 쌓여 있고, 각 층은 (N \\times M) 격자 형태이다익은 토마토(1)는 하루가 지나면 앞/뒤/좌/우/위/아래(6방향) 의 익지 않은 토마토(0)를 익게 만든다모든 토마토가 익을 때까지 필요한 최소 일수를 출력