[백준] 12014번 - 주식 java
·
Algorithm/Baekjoon
https://www.acmicpc.net/problem/12014난이도 : G2Tag : DP풀이 일자 : 2025-06-08문제 탐색하기총 N일간의 주식 가격이 주어집니다.K번 주식을 사야 하며, 첫 매수 이후에는 반드시 이전 매수보다 가격이 오른 날에만 살 수 있습니다.조건N일 동안의 주식 가격이 주어짐 (1 ≤ N ≤ 10,000)K번의 매수 진행 (1 ≤ K ≤ 10,000)첫 매수 이후로는 반드시 직전보다 비싼 날에만 매수 가능가능한 시간복잡도단순 DP로 풀면 O(N^2)주어진 최대 범위 N=10,000이라면, Java 기준으로도 1억 연산하지만 테스트 케이스 수(T ≤ 100) 고려 시 통과 가능알고리즘 선택기본적으로는 Longest Increasing Subsequence (LIS) 문제입..
[백준] 9328번 - 열쇠 java
·
Algorithm/Baekjoon
문제 탐색하기상근이는 빌딩에 침입해 가능한 한 많은 문서를 훔쳐야 합니다.빌딩 내부에는 벽, 문, 열쇠, 문서 등이 있으며, 열쇠를 이용해 문을 열고 이동할 수 있습니다.상근이는 빌딩 외부에서 시작하여 빈 공간을 통해 내부로 진입하며, 문을 통과하려면 해당 문에 맞는 열쇠가 필요합니다.조건 • . : 빈 공간 • * : 벽 (이동 불가) • $ : 문서 • 'A' ~ 'Z' : 문 (해당 문자의 소문자 열쇠가 필요) • 'a' ~ 'z' : 열쇠 (해당 문자의 대문자 문을 열 수 있음)추가 조건 • 상근이는 빌딩 외부에서 시작하며, 가장자리의 빈 공간을 통해 진입 가능 • 열쇠는 여러 번 사용 가능 • 열쇠 없이 문을 만나면 해당 위치는 기억해두고, 나중에 열쇠를 얻으면 방문 재시도⸻가능한 시간복잡도 ..
[백준] 2638번 - 치즈 java
·
Algorithm/Baekjoon
https://www.acmicpc.net/problem/2638난이도 : G3Tag : BFS + 구현풀이 일자 : 2025-06-01문제 탐색하기치즈가 놓인 2차원 격자가 주어졌을 때, 매 시간마다 외부 공기와 접촉한 치즈 격자가 녹아 사라집니다.모든 치즈가 녹아 없어지는 데까지 걸리는 시간을 구하는 문제입니다.조건치즈는 1, 공기는 0으로 주어짐녹는 기준: 해당 치즈 칸의 4변 중 2변 이상이 외부 공기(실내 온도)와 접촉하면 1시간 후 녹음내부 공기는 외부 공기와 닿아있지 않기 때문에 치즈를 녹이지 않음격자의 가장자리는 치즈가 놓이지 않음 → (0,0)은 항상 외부 공기입력: 5 ≤ N, M ≤ 100가능한 시간복잡도매 시간마다 아래 작업이 반복됩니다:BFS로 외부 공기 탐색 → O(N×M)모든 ..
[백준] 9019번 - DSLR java
·
Algorithm/Baekjoon
https://www.acmicpc.net/problem/9019난이도 : G5Tag : BFS풀이 일자 : 2025-05-31문제 탐색하기숫자 a와 b가 주어졌을때 4개의 명령어 D,S,L,R을 이용해 a를 b로 만드는 최소횟수의 명령어를 구하면 됩니다.D : n을 두 배로 바꾼다. (결과값이 9999이상이면 10000으로 나눈 나머지를 취한다.)S : n에서 1을 뺀 결과 n-1을 레지스터에 저장한다. (n이 0이라면 9999저장)L : n의 각 자릿수를 왼편으로 회전시켜 그 결과를 레지스터에 저장한다. (1234 -> 2341)R : n의 각 자릿수를 오른편으로 회전시켜 그 결과를 레지스터에 저장한다. (1234 -> 4123)조건레지스터에는 0 이상 10000 미만의 십진수만 저장됩니다.명령어 ..
[백준] 14890번 - 경사로 java
·
Algorithm/Baekjoon
https://www.acmicpc.net/problem/14890난이도 : G3Tag : 시뮬레이션(구현)풀이 일자 : 2025-05-28문제 탐색하기N×N 크기의 지도에서, 각 행과 각 열이 "지날 수 있는 길"인지 확인하는 문제입니다.길을 지나기 위한 조건은 다음과 같습니다:모든 칸의 높이가 같거나,높이 차가 1이고 경사로 설치 조건을 만족해야 합니다.조건경사로 길이: L경사로 설치 조건:낮은 칸에만 설치 가능높이 차는 1이어야 함낮은 칸이 연속으로 L칸 있어야 함경사로가 겹치면 안 됨설치 범위를 벗어나면 안 됨가능한 시간복잡도각 행과 열마다 길인지 확인 = 2×N한 행/열은 O(N) 탐색→ 총 시간복잡도: O(N²) (N ≤ 100 → 최대 10,000번 연산)→ 시간 제한 2초 이내 충분히 해결..
[백준] 14499번 - 주사위 굴리기 java
·
Algorithm/Baekjoon
https://www.acmicpc.net/problem/14499난이도 : G4Tag : 시뮬레이션(구현)풀이 일자 : 2025-05-27문제 탐색하기N×M 크기의 지도가 있고, 주사위가 특정 좌표 위에 놓여 있습니다.주어진 명령에 따라 주사위를 굴리며, 다음 동작을 반복합니다:주사위가 이동한다.이동한 칸의 숫자와 주사위 바닥면의 숫자를 비교해 갱신한다.칸의 숫자가 0이면, 주사위 바닥 숫자를 복사0이 아니면, 칸의 숫자가 주사위 바닥으로 복사되고 칸은 0이 된다주사위의 윗면 숫자를 출력한다.주어진 방향대로 굴리고, 지도를 갱신하며, 출력만 잘 처리하면 되는 시뮬레이션 문제입니다.조건지도 크기: 1 ≤ N, M ≤ 20시작 좌표: (x, y)는 0 ≤ x 명령 수: 1 ≤ K ≤ 1000방향 명령:동:..
[백준] 12015번 - 가장 긴 증가하는 부분 수열 2 java
·
Algorithm/Baekjoon
https://www.acmicpc.net/problem/12015난이도 : G2Tag : 이분탐색풀이 일자 : 2025-05-25문제 탐색하기수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열(LIS)의 길이를 구하는 문제입니다.수열의 일부 항을 건너뛰어가며 증가하는 부분 수열을 만들어야 하며,필요한 건 그 수열 자체가 아니라 최대 길이입니다.조건1 ≤ N ≤ 1,000,000 (수열의 길이)1 ≤ Ai ≤ 1,000,000 (수열의 원소 값)시간 제한: 1초가능한 시간복잡도완전 탐색 (O(N²))으로 LIS를 구하면 시간 초과 발생이분 탐색을 활용한 O(N log N) 풀이 필요lower_bound 위치에 값을 갱신하면서 현재 가능한 증가 수열을 관리알고리즘 선택처음에는 O(N²) 방식의 평범한 D..
[백준] 2473번 - 세 용액 java
·
Algorithm/Baekjoon
https://www.acmicpc.net/problem/2473난이도 : G3Tag : 투포인터풀이 일자 : 2025-05-24문제 탐색하기산성 또는 알칼리성 용액의 특성값들이 주어진다.이 중 서로 다른 세 가지 용액을 혼합했을 때, 혼합 용액의 특성값(세 수의 합)이 0에 가장 가까운 조합을 찾아야 한다.단, 세 용액은 모두 다른 용액이어야 하며, 알칼리성끼리, 산성끼리만 혼합하는 것도 가능하다.조건3 ≤ N ≤ 5,000특성값은 -1,000,000,000 이상 1,000,000,000 이하의 정수모든 특성값은 서로 다름가능한 시간복잡도이분 탐색과 투포인터 모두 가능모든 세 수를 완전 탐색하면 O(N³) → 시간 초과이분탐색: 두 수 고정 후, 나머지 한 수를 이분 탐색 (O(N² log N))투포..