kimkkatta::LOG
kimkkatta@cyber-node
SOLO
[SYSTEM: NEON_CITY_KERNEL] kimkkatta OS v2.6.0 ONLINE // Type 'help' or click a command below.
> Welcome, Operator! Initialized 153 archived logs. [SECTOR_09: 0 PEERS DETECTED — SOLO SESSION]
QUICK:
DEV TELEMETRY// kimkkatta

kimkkatta // DEV.LOG

터미널 감성과 인터랙티브 웹 기술을 기록하는 kimkkatta의 개발 로그 & 아카이브

POSTS

153

CATS

4

TAGS

192

VISITORSSYNC
TODAY...
TOTAL...
// CODE METRICS@nicebyy28 REPOS · 29.8 MB
TypeScript4.76 MB
26%
Java3.79 MB
21%
JavaScript4.68 MB
25%
CSS / Style4.92 MB
27%
Kotlin278 KB
1%
PROJECTS ARCHIVE // FEATURED BUILDS

FEATURED PROJECTS

단순한 토이를 넘어 실제 사용자 가치와 문제 해결, 0ms 무지연 로컬 우선 및 엔터프라이즈 아키텍처를 탐구한 4대 핵심 개인 프로젝트입니다.

전체 아카이브 보기
FILTER:
Full-Stack Web
Active // Live Service

1234 Pick/Ban Simulator

LoL Ban/Pick & Team Auction Platform

리그 오브 레전드(LoL) 공식 e스포츠 20단계 밴픽 룰, 피어리스 드래프트, 실시간 팀 경매 및 크로노브레이크 무손실 롤백을 지원하는 올인원 웹 플랫폼

// KEY HIGHLIGHTS

  • 공식 LCK 20단계 드래프트 플로우 및 피어리스 드래프트(Fearless Draft) 완벽 구현
  • 드래프트/경매 실수 무손실 스냅샷 롤백 시스템 크로노브레이크(ChronoBreak)
  • 포인트 기반 실시간 선수 호가 입찰 경매 & 스네이크 변형 팀원 드래프트

Architecture

Dual DB (Mongo + In-Memory)

Sync Engine

Socket.IO Real-time

Verification

119+ E2E Test Suite

Next.js 14NestJS 10TypeScript 5Socket.IO 4Tailwind CSSMongoDB 7Docker ComposeZustand
Mobile & Web App
Active // Open Source

KKT 북마크 (Smart Bookmark)

Clean & Hierarchy Bookmark App

광고 없는 쾌적함, 강력한 다단계 계층 폴더(트리 구조)와 다중 태그, 브라우저 지정 실행을 지원하는 스마트 북마크 앱

// KEY HIGHLIGHTS

  • 무제한 깊이의 다단계 계층 폴더(트리 구조) 및 인터랙티브 브레드크럼 경로 이동
  • 다중 태그(Multi-Tag) 유연 분류 및 상단 가로 스크롤 원클릭 태그 필터 바
  • 실행 브라우저 자유 지정 (Chrome, 삼성인터넷, 네이버 앱, 웨일, Edge Intent 연동)

Data Safety

100% Local-First Offline

Platform

Android Native + Web PWA

Zero Ads

0 Trackers / No SDK

KotlinJetpack ComposeAndroid Room DBSQLiteTypeScriptNode.jsWeb PWA
Desktop Application
v1.0.2 // MS Store 출시

Classic Calendar (클래식 캘린더)

Zero-Latency Desktop Calendar

Windows 10 시절의 미려하고 가벼웠던 일정 앱을 정밀하게 계승한 초경량·고반응성(0ms 로컬 우선) 데스크톱 캘린더

// KEY HIGHLIGHTS

  • Zero-Latency In-Memory State 기반 로딩 지연 없는 0ms 초고속 렌더링
  • 5대 캘린더 풀 뷰 (월간, 주간, 작업 주, 일간, 연간 뷰 & 시맨틱 줌)
  • Windows 10 Fluent Design System (아크릴 효과, Reveal Highlight, 프레임리스)

Responsiveness

0ms In-Memory State

Packaging

MS Store (.appx) + NSIS

CI/CD Pipeline

Auto SemVer & Release

Electron 34React 19TypeScript 5.7Vite 6Zustand 5Tailwind CSS v4Vitest 3
Browser Extension
v0.2.6 // Chrome 웹스토어 출시

Job Blocking V2 (채용 공고 필터링)

Chrome Extension for Job Portals

원티드·사람인·잡코리아·리멤버·점핏 5대 채용 플랫폼에서 원치 않는 기업 및 불필요한 추천/광고 공고를 숨기거나 블러 처리하는 크롬 확장 프로그램

// KEY HIGHLIGHTS

  • 원클릭 [공고숨김] 및 [회사차단] (지능형 기업명 정규화 & O(1) 초고속 인덱스 매칭)
  • 원티드, 사람인, 잡코리아, 리멤버, 점핏 5대 채용 플랫폼 완전 맞춤 지원
  • 잡플래닛 & 블라인드 실시간 듀얼 기업 평점 뱃지 인라인 렌더링 (2계층 캐싱)

Supported Platforms

5 Major Job Portals

Matching Engine

O(1) Hash Index (0.03ms)

Privacy Policy

Zero Data Collection

Chrome Manifest V3TypeScript 5.7React 18.3Vite 6@crxjs/vite-pluginVitestPlaywright
LOGS // 153 / 153
CATEGORY:
TAGS:
PS❯BOJ
2024-06-224 min read

[BOJ 21318] 피아노 체조 (Java) - 구간 실수 횟수 누적합(Prefix Sum) 풀이

백준 21318번(피아노 체조) 문제에서 N과 Q가 최대 100,000이고 시간 제한이 0.5초일 때, 구간 내 실수 횟수를 누적합(Prefix Sum)으로 전처리해 O(N + Q)에 해결하는 방법을 정리합니다.

#BOJ#누적합#Java#Silver I#알고리즘
Backend❯Spring
2023-10-292 min read

[Spring] JDK 21+ 환경에서 Lombok NoSuchFieldError: JCTree$JCImport 빌드 에러 해결

JDK 21 이상 환경에서 Gradle 빌드 시 구버전 Lombok 어노테이션 프로세서가 javac 내부 AST API(JCTree$JCImport.qualid)와 충돌하여 발생하는 NoSuchFieldError 원인과 해결 방법을 정리합니다.

#Lombok#JDK 21#Gradle#NoSuchFieldError#트러블슈팅
PS❯Programmers
2023-10-103 min read

[프로그래머스] 가장 큰 수 (Level 2, Java) - 문자열 조합 정렬 기준 설계

프로그래머스 Level 2 가장 큰 수 문제를 풀기 위해 두 수를 이어 붙인 문자열 비교((s2 + s1).compareTo(s1 + s2))를 정렬 기준으로 삼는 원리와 모든 원소가 0인 엣지 케이스 처리 방법을 정리합니다.

#Programmers#정렬#Comparator#Java#Level 2
PS❯BOJ
2023-10-064 min read

[BOJ 15486] 퇴사 2 (Java) - O(N) 상향식 동적 계획법(DP) 풀이

백준 15486번(퇴사 2) 문제에서 N이 최대 1,500,000일 때 브루트포스 대신 O(N) 상향식 DP와 누적 최대 수익(maxPay)으로 최대 수익을 구하는 점화식 설계를 정리합니다.

#BOJ#DP#다이나믹프로그래밍#Java#Gold V
PS❯Programmers
2023-09-174 min read

[프로그래머스] 과제 진행하기 (Level 2, Java) - 스택(Stack) 기반 시간 시뮬레이션

프로그래머스 Level 2 과제 진행하기 문제에서 시작 시각 순 정렬과 LIFO 스택을 결합해 중단된 과제를 우선순위에 맞게 이어서 처리하는 시뮬레이션 풀이를 정리합니다.

#Programmers#스택#구현#시뮬레이션#Java#Level 2
Backend❯Spring
2023-08-113 min read

[Spring] WebSocket + SockJS 환경에서 Apache Reverse Proxy 설정 트러블슈팅

Spring WebSocket(STOMP + SockJS) 서버 앞단에 Apache Reverse Proxy를 구성할 때 Upgrade 헤더 분기 처리 순서로 인해 SockJS 초기 핸드셰이크(/info)가 404 실패하는 원인과 올바른 VirtualHost 설정 방법을 정리합니다.

#Spring WebSocket#SockJS#Reverse Proxy#Apache HTTP Server#트러블슈팅
Backend❯Spring
2023-06-257 min read

[Spring] Redisson Remote Service 내부 동작 원리와 한계 분석

Redis 기반 RPC 기능을 제공하는 Redisson Remote Service를 Spring Boot Gradle 멀티모듈 프로젝트로 직접 구현하고, 디버깅과 Codec 분석을 통해 JDK 동적 프록시 동작 원리와 Common 모듈 패키지 결합도 한계를 분석합니다.

#MSA#Redis#Redisson#RemoteService#JDK Dynamic Proxy
Backend❯Spring
2023-04-074 min read

[Spring] 분산 환경 동시성 제어 — Redisson 락 병목과 MySQL Named Lock 전환기

암호화폐 거래소 다중 서버 환경에서 1분 단위 차트 배치를 처리할 때 Redisson 분산 락에서 겪은 커넥션 풀 병목 현상을 분석하고, MySQL Named Lock(GET_LOCK/RELEASE_LOCK) 및 REQUIRES_NEW 트랜잭션 격리로 전환해 해결한 실무 경험을 정리합니다.

#Concurrency#Distributed Lock#Redisson#MySQL NamedLock#Spring
Backend❯Spring
2022-11-073 min read

[Spring] PRG 패턴에서 redirect:/가 동작하지 않는 이유 (@ResponseStatus 함정)

상품 등록 후 PRG(Post-Redirect-Get) 패턴으로 목록 페이지 리다이렉트를 구현할 때, @ResponseStatus(HttpStatus.CREATED)로 인해 브라우저 리다이렉트가 무시되는 원인과 올바른 HTTP 상태 코드 설정법을 정리합니다.

#Spring MVC#Redirect#PRG 패턴#HttpStatus#트러블슈팅
Backend❯Spring
2022-11-033 min read

[Spring] WebFlux 도입에 관한 고민 — Spring MVC와의 비교 및 주의사항

Spring 5.0에서 도입된 리액티브 웹 프레임워크 WebFlux의 동작 원리와 Spring MVC(명령형)와의 장단점 비교, 도입을 고려해야 할 실무 시나리오, 그리고 블로킹 DB(JDBC) 혼용 시 주의해야 할 병목 함정을 정리합니다.

#Spring WebFlux#Reactive Streams#Non-Blocking#R2DBC#아키텍처
Backend❯Spring
2022-09-173 min read

[Spring] Redis 개요와 세션 클러스터링, Spring Data Redis 연동

In-Memory Key-Value 저장소 Redis의 개념과 Memcached와의 차이점, 다중 서버 환경에서 Redis 기반 세션 클러스터링이 필요한 이유, 그리고 Spring Boot에서의 기본 연동 설정을 정리합니다.

#Redis#Spring Data Redis#세션 클러스터링#Cache
Backend❯Spring
2022-07-062 min read

[Spring] Spring Boot 개발 환경(Profile) 분리 및 Jasypt DataSource 암호화

Spring Boot 2.4+의 config.activate.on-profile 문법을 활용해 테스트(H2)와 개발(PostgreSQL/RDS) 환경을 분리하고, Git 저장소에 DB 접속 정보가 평문 노출되지 않도록 Jasypt로 민감정보를 암호화하는 방법을 정리합니다.

#Spring Profile#application.yml 암호화#Jasypt#DataSource 보안
Backend❯Spring
2022-06-265 min read

[Spring] RestTemplate 동작 원리와 HTTP 메서드 사용법 (WebClient 비교)

Spring의 동기식 REST 클라이언트 RestTemplate의 HttpMessageConverter 기반 동작 원리와 GET/POST/PUT/DELETE 사용 예시, 그리고 대용량 동시성 환경에서 WebClient가 권장되는 이유를 정리합니다.

#REST API#RestTemplate#WebClient#Spring MVC#스프링 인 액션
Backend❯Spring
2022-06-196 min read

[Spring] REST API 성숙도 Level 3 — Spring HATEOAS로 하이퍼미디어 링크 삽입하기

REST API 성숙도 모델의 최고 단계인 HATEOAS 개념을 이해하고, Spring HATEOAS의 EntityModel·CollectionModel·RepresentationModelAssembler를 활용해 응답 JSON에 동적 하이퍼링크(_links)를 삽입하는 방법을 정리합니다.

#REST API#Spring HATEOAS#Hypermedia#스프링 인 액션
Backend❯Spring
2022-06-164 min read

[Spring] Spring MVC HTTP 통신 핵심 애노테이션 총정리

Spring MVC 컨트롤러에서 HTTP 요청을 매핑하고 데이터를 바인딩할 때 사용하는 @RequestMapping, @RequestParam, @ModelAttribute, @RequestBody, @PathVariable, @ResponseBody 등의 역할을 정리합니다.

#@RequestParam#@RequestBody#@ModelAttribute#@PathVariable#Spring MVC
Backend❯Spring
2022-06-074 min read

[Spring] YAML(YML) 문법과 Spring Boot 설정(@ConfigurationProperties, Profile) 정리

YAML(YML)의 기본 문법과 자료형, Spring Boot에서 @ConfigurationProperties와 Profile로 환경별 설정을 관리하는 방법, 그리고 .properties 파일과 비교했을 때의 장단점을 정리합니다.

#YAML#Spring Boot 설정#ConfigurationProperties#Profile#properties vs yml
Backend❯Spring
2022-06-076 min read

[Spring Security] 스프링 시큐리티 인증·인가 구성 및 UserDetailsService 구현 정리

Spring Security의 HTTP 보안 설정(HttpSecurity)과 주요 인가 메서드, 4가지 사용자 저장소(In-Memory, JDBC, LDAP, 커스텀 UserDetailsService) 구성 방법, 그리고 BCrypt PasswordEncoder 적용법을 정리합니다.

#Spring Security#WebSecurityConfigurerAdapter#UserDetailsService#PasswordEncoder#BCrypt
Backend❯Spring
2022-06-023 min read

[Spring Security] hasRole("ROLE_USER") 오류 원인과 ROLE_ Prefix 동작 원리

Spring Security 설정 시 .hasRole("ROLE_USER")를 전달했을 때 발생하는 IllegalArgumentException 오류의 원인을 내부 소스 코드(ExpressionUrlAuthorizationConfigurer)로 파헤치고, hasRole과 hasAuthority의 차이를 정리합니다.

#Spring Security#hasRole#hasAuthority#ROLE_ Prefix#트러블슈팅
PS❯BOJ
2022-06-014 min read

[BOJ 1062] 가르침 (Java) - 백트래킹 조합 탐색과 비트마스킹 최적화

백준 1062번(가르침) 문제에서 필수 문자 5개(a, n, t, i, c)를 제외한 나머지 21개 알파벳 중 K - 5개를 선택하는 백트래킹 풀이와 비트마스킹 최적화 방법을 정리합니다.

#BOJ#백트래킹#완전탐색#비트마스킹#문자열#Java#Gold IV
PS❯BOJ
2022-05-305 min read

[BOJ 2573] 빙산 (Java) - 동시 융해 큐 처리와 DFS 연결 요소 분리 탐색

백준 2573번(빙산) 문제에서 인접 바다 개수만큼 빙산이 동시에 녹을 때 발생하는 연쇄 갱신 오류를 큐(Queue)로 방지하고, DFS로 빙산 덩어리 분리 시점을 판별하는 풀이를 정리합니다.

#BOJ#DFS#BFS#시뮬레이션#그래프탐색#Java#Gold IV
PS❯BOJ
2022-05-303 min read

[BOJ 13458] 시험 감독 (Java) - 그리디 나눗셈과 long 오버플로우 주의사항

백준 13458번(시험 감독) 문제에서 시험장별 총감독관 1명 필수 배치 조건과 부감독관 올림 나눗셈 처리, 그리고 최대 10^12까지 커지는 정답에 long 타입을 사용해야 하는 이유를 정리합니다.

#BOJ#수학#구현#그리디#Java#Bronze II
PS❯BOJ
2022-05-255 min read

[BOJ 17136] 색종이 붙이기 (Java) - 그리디 반례와 백트래킹(DFS) 완전 탐색

백준 17136번(색종이 붙이기) 문제가 큰 색종이부터 붙이는 그리디로 풀리지 않는 반례를 살펴보고, 10x10 격자에서 좌상단부터 DFS 백트래킹으로 최소 색종이 개수를 찾는 풀이를 정리합니다.

#BOJ#백트래킹#DFS#완전탐색#Java#Gold II
Backend❯Spring
2022-05-245 min read

[Spring] Bean Validation(@Valid, @Validated)과 폼 유효성 검증

Spring Boot Validation 의존성 설정부터 @Valid와 @Validated의 차이, Errors/BindingResult를 활용한 에러 핸들링, 그리고 Thymeleaf 폼 검증 에러 바인딩 방법을 정리합니다.

#Form Validation#@Valid#@Validated#BindingResult#Thymeleaf
Backend❯JPA
2022-05-246 min read

[JPA] JPA 개요와 영속성 컨텍스트 핵심 정리

ORM과 JPA의 등장 배경부터 EntityManagerFactory/EntityManager의 구동 원리, 영속성 컨텍스트의 4가지 생명주기 및 핵심 이점(동일성 보장, 쓰기 지연, 변경 감지, 지연 로딩)을 예제 코드와 함께 정리합니다.

#JPA#ORM#영속성 컨텍스트#Dirty Checking#지연로딩
PS❯BOJ
2022-05-194 min read

[BOJ 15787] 기차가 어둠을 헤치고 은하수를 (Java) - 20비트 마스킹 시뮬레이션

백준 15787번(기차가 어둠을 헤치고 은하수를) 문제에서 N과 M이 최대 100,000일 때 기차 20개 좌석 상태를 int 비트마스크 하나로 압축해 4가지 명령을 O(1)로 처리하는 풀이를 정리합니다.

#BOJ#비트마스킹#구현#시뮬레이션#Java#Silver II
PS❯BOJ
2022-05-184 min read

[BOJ 1052] 물병 (Java) - 이진수 1의 개수와 비트 트릭 n & (-n) 풀이

백준 1052번(물병) 문제에서 물병을 합치는 과정이 이진수 덧셈과 같음을 이해하고, Integer.bitCount(n)과 최하위 비트 추출 트릭 n & (-n)으로 최소 구매 개수를 구하는 풀이를 정리합니다.

#BOJ#비트마스킹#그리디#수학#Java#Silver I
PS❯BOJ
2022-05-144 min read

[BOJ 17124] 두 개의 배열 (Java) - TreeSet의 lower/higher를 활용한 근삿값 탐색

백준 17124번(두 개의 배열) 문제에서 A의 각 원소와 가장 가까운 B의 원소를 찾기 위해 TreeSet의 lower/higher 메서드를 활용하는 방법과 정렬+이분 탐색 최적화 포인트를 정리합니다.

#BOJ#이분탐색#TreeSet#Java#Silver III
PS❯BOJ
2022-05-116 min read

[BOJ 19236] 청소년 상어 (Java) - 2차원 상태 복제와 백트래킹 시뮬레이션

백준 19236번(청소년 상어) 문제에서 번호순 물고기 이동과 상어의 다중 칸 이동을 DFS 백트래킹으로 구현할 때, 2차원 map 배열과 Fish 객체 배열을 깊은 복사로 원상 복구하는 방법을 정리합니다.

#BOJ#구현#시뮬레이션#DFS#백트래킹#Java#Gold II
PS❯BOJ
2022-05-113 min read

[BOJ 10844] 쉬운 계단 수 (Java) - 2차원 DP 점화식과 모듈러 연산 주의점

백준 10844번(쉬운 계단 수) 문제에서 끝자리 숫자(0~9)를 기준으로 길이를 확장해 가는 2차원 DP 점화식 설계와 경계값(0, 9), 모듈러 연산 괄호 주의점을 정리합니다.

#BOJ#DP#다이나믹프로그래밍#Java#Silver I
Backend❯Spring
2022-05-073 min read

[Spring] Spring 컨테이너 구조와 Bean 등록 전략 (자동 vs 수동)

스프링 애플리케이션의 핵심인 ApplicationContext DI 컨테이너와 빈(Bean) 등록 방식, @Configuration의 CGLIB 프록시 싱글톤 보장 원리, 그리고 수동/자동 빈 등록 기준을 정리합니다.

#Spring 구조#ApplicationContext#DI 컨테이너#CGLIB#Bean 등록
PS❯BOJ
2022-05-064 min read

[BOJ 3085] 사탕 게임 (Java) - 인접 칸 교환 후 전체 보드 최대 연속 길이 탐색

백준 3085번(사탕 게임) 문제에서 N <= 50 제약을 근거로 인접한 사탕을 한 번 교환한 뒤 행과 열의 최대 연속 사탕 개수를 구하는 완전 탐색 풀이를 정리합니다.

#BOJ#브루트포스#구현#Java#Silver III
PS❯BOJ
2022-05-053 min read

[BOJ 1935] 후위 표기식2 (Java) - Stack 기반 수식 계산과 피연산자 순서 주의

백준 1935번(후위 표기식2) 문제에서 피연산자 매핑(A~Z)과 스택을 활용한 후위 표기식 계산 순서(op2 op op1), 그리고 소수점 둘째 자리 출력 처리 방법을 정리합니다.

#BOJ#스택#자료구조#구현#Java#Silver III
PS❯BOJ
2022-05-053 min read

[BOJ 17413] 단어 뒤집기 2 (Java) - 상태 플래그와 StringBuilder를 활용한 O(N) 파싱

백준 17413번(단어 뒤집기 2) 문제에서 <태그> 내부 문자열은 유지하고 태그 외부 단어만 공백과 태그 경계에서 뒤집어 출력하는 O(N) 문자열 파싱 풀이를 정리합니다.

#BOJ#문자열#구현#파싱#Java#Silver III
PS❯BOJ
2022-04-285 min read

[BOJ 12100] 2048 (Easy) (Java) - 큐(Queue) 병합 시뮬레이션과 2차원 배열 원복

백준 12100번(2048 Easy) 문제에서 최대 5번 이동하는 모든 경우(4^5 = 1,024)를 DFS로 탐색하면서, 연쇄 병합을 방지하는 큐 기반 이동 로직과 2차원 배열 깊은 복사 원복 구현을 정리합니다.

#BOJ#구현#시뮬레이션#백트래킹#DFS#Java#Gold II
PS❯BOJ
2022-04-273 min read

[BOJ 16198] 에너지 모으기 (Java) - 경로 압축(next[])을 접목한 백트래킹 풀이

백준 16198번(에너지 모으기) 문제에서 구슬 개수 N <= 10 제약을 이용한 DFS 백트래킹을 구현하면서, ArrayList 삭제 대신 Union-Find 방식의 좌우 인덱스 점프(next[])를 활용한 풀이를 정리합니다.

#BOJ#백트래킹#DFS#브루트포스#Java#Silver I
PS❯BOJ
2022-04-263 min read

[BOJ 1406] 에디터 (Java) - 0.3초 시간 초과 해결을 위한 두 개의 스택(Two Stacks)

백준 1406번(에디터) 문제에서 0.3초의 빡빡한 시간 제한으로 인해 LinkedList 인덱스 접근이 시간 초과되는 이유를 분석하고, 커서 기준 좌·우 두 개의 스택으로 모든 명령을 O(1)에 처리하는 풀이를 정리합니다.

#BOJ#스택#자료구조#구현#Java#Silver II
PS❯BOJ
2022-04-213 min read

[BOJ 2504] 괄호의 값 (Java) - 분배법칙과 스택(Stack)으로 괄호 수식 계산하기

백준 2504번(괄호의 값) 문제에서 중첩된 괄호의 곱셈·덧셈 계산을 분배법칙 원리로 풀어, 스택과 임시 가중치 변수 cur 하나로 한 번의 순회만에 값을 계산하는 풀이를 정리합니다.

#BOJ#스택#구현#자료구조#Java#Gold V
PS❯BOJ
2022-04-204 min read

[BOJ 18111] 마인크래프트 (Java) - 높이 범위 최적화 완전 탐색(Brute Force)

백준 18111번(마인크래프트) 문제에서 땅의 최소·최대 높이 범위(fromHeight ~ toHeight)로 탐색 구간을 좁히고, 인벤토리 잔여 블록 조건과 최소 시간 타이브레이킹(가장 높은 땅)을 처리하는 풀이를 정리합니다.

#BOJ#브루트포스#구현#Java#Silver II
PS❯BOJ
2022-04-153 min read

[BOJ 1107] 리모컨 (Java) - 탐색 상한 999,999와 M=0 입력 예외 처리

백준 1107번(리모컨) 문제에서 목표 채널이 최대 500,000임에도 999,999까지 완전 탐색해야 하는 이유와, 고장난 버튼이 0개(M=0)일 때 입력 줄이 주어지지 않아 발생하는 런타임 에러 방지 포인트를 정리합니다.

#BOJ#브루트포스#구현#Java#Gold V
PS❯BOJ
2022-04-144 min read

[BOJ 14500] 테트로미노 (Java) - 깊이 4 DFS와 T(ㅗ) 블록 별도 탐색 기법

백준 14500번(테트로미노) 문제에서 5가지 테트로미노 중 4가지는 깊이 4 DFS로 탐색하고, 일필휘지로 그릴 수 없는 T(ㅗ, ㅜ, ㅏ, ㅓ) 블록만 중심 칸 기준 4방 합산에서 1칸을 빼는 방식으로 구하는 풀이를 정리합니다.

#BOJ#브루트포스#DFS#구현#Java#Gold IV
PS❯BOJ
2022-04-134 min read

[BOJ 1800] 인터넷 설치 (Java) - 이분 탐색(Parametric Search) + 다익스트라

백준 1800번(인터넷 설치) 문제에서 경로 비용의 합이 아니라 'K개의 무료 케이블을 제외하고 남은 최대 케이블 비용'을 최소화하기 위해 이분 탐색과 다익스트라(dist = 상한선 초과 간선 수)를 결합하는 방법을 정리합니다.

#BOJ#다익스트라#이분탐색#매개변수탐색#그래프#Java#Gold I
PS❯BOJ
2022-04-122 min read

[BOJ 1032] 명령 프롬프트 (Java) - 열(Column) 단위 문자 일치 비교

백준 1032번(명령 프롬프트) 문제에서 길이가 모두 같은 N개의 파일 이름을 세로(열) 방향으로 비교해 불일치하는 위치만 '?'로 치환하는 풀이를 정리합니다.

#BOJ#문자열#구현#Java#Bronze I
Backend❯JPA
2022-04-102 min read

[JPA] Custom Repository 네이밍 규칙과 UnsatisfiedDependencyException 트러블슈팅

QueryDSL 도입을 위해 Custom Repository 구현체를 V1/V2로 분리하던 중 발생한 UnsatisfiedDependencyException 원인을 Spring Data JPA의 Impl 접미사 탐색 규칙 관점에서 분석하고 해결 방법을 정리합니다.

#Spring Data JPA#CustomRepository#QueryDSL#UnsatisfiedDependencyException
PS❯BOJ
2022-04-082 min read

[BOJ 2980] 도로와 신호등 (Java) - 모듈러(%) 사이클 계산 시뮬레이션

백준 2980번(도로와 신호등) 문제에서 신호등의 (빨간불 + 초록불) 주기 대비 현재 경과 시각을 나머지 연산(%)으로 계산해 대기 시간을 합산하는 간단한 시뮬레이션 풀이를 정리합니다.

#BOJ#구현#시뮬레이션#수학#Java#Silver IV
PS❯BOJ
2022-04-084 min read

[BOJ 1445] 일요일 아침의 데이트 (Java) - 다중 우선순위 다익스트라(PriorityQueue)

백준 1445번(일요일 아침의 데이트) 문제에서 쓰레기 칸 통과 최소화를 1순위, 쓰레기 인접 칸 경유 최소화를 2순위로 두는 우선순위 큐 탐색과 S/F 예외 처리 방법을 정리합니다.

#BOJ#다익스트라#그래프탐색#PriorityQueue#Java#Gold II
PS❯BOJ
2022-04-073 min read

[BOJ 8979] 올림픽 (Java) - Comparable과 TreeMap을 활용한 공동 등수 산출

백준 8979번(올림픽) 문제에서 금·은·동 메달 기준 내림차순 정렬을 Comparable과 TreeMap으로 구성해 공동 등수와 다음 등수 건너뛰기를 깔끔하게 처리하는 풀이를 정리합니다.

#BOJ#정렬#구현#TreeMap#Java#Silver V
PS❯BOJ
2022-04-075 min read

[BOJ 13460] 구슬 탈출 2 (Java) - 4차원 방문 배열 BFS와 구슬 겹침 보정

백준 13460번(구슬 탈출 2) 문제에서 빨간 구슬과 파란 구슬의 좌표를 함께 상태로 관리하는 4차원 방문 배열 BFS와, 두 구슬이 같은 칸에서 만났을 때 이동 전 좌표로 위치를 한 칸 보정하는 핵심 로직을 정리합니다.

#BOJ#BFS#구현#시뮬레이션#그래프탐색#Java#Gold I
PS❯BOJ
2022-04-053 min read

[BOJ 18405] 경쟁적 전염 (Java) - 시간·번호 우선순위 큐(PriorityQueue) BFS

백준 18405번(경쟁적 전염) 문제에서 매 초마다 번호가 낮은 바이러스부터 먼저 증식해야 하는 조건을 (time, type) 기준 우선순위 큐 BFS로 구현하는 방법을 정리합니다.

#BOJ#BFS#우선순위큐#구현#Java#Silver I
PS❯BOJ
2022-04-044 min read

[BOJ 1865] 웜홀 (Java) - 벨만-포드(Bellman-Ford)로 그래프 전체 음수 사이클 탐지하기

백준 1865번(웜홀) 문제에서 시작점이 정해지지 않은 그래프 전체의 음수 사이클 존재 여부를 판별하기 위해 벨만-포드 거리 배열 distance[]를 INF가 아닌 0으로 초기화하는 원리를 정리합니다.

#BOJ#벨만포드#그래프#음수사이클#Java#Gold III
PS❯BOJ
2022-04-024 min read

[BOJ 1043] 거짓말 (Java) - 유니온 파인드(Union-Find)로 진실 전파 집합 분리하기

백준 1043번(거짓말) 문제에서 여러 파티를 거치며 전파되는 진실 그룹을 Union-Find(Disjoint Set)로 묶어 과장된 이야기를 할 수 있는 파티의 최댓값을 구하는 풀이를 정리합니다.

#BOJ#유니온파인드#분리집합#그래프#Java#Gold IV
PS❯Programmers
2022-03-283 min read

[프로그래머스] 배달 (Level 2, Java) - 1번 마을 출발 다익스트라(Dijkstra)

프로그래머스 Level 2 배달 문제에서 1번 마을을 시작점으로 모든 마을까지의 최단 배달 시간을 다익스트라(PriorityQueue)로 구한 뒤 K 이하인 마을의 개수를 카운트하는 풀이를 정리합니다.

#Programmers#다익스트라#최단경로#그래프#Java#Level 2
PS❯BOJ
2022-03-253 min read

[BOJ 15686] 치킨 배달 (Java) - 치킨집 M개 조합 백트래킹과 맨해튼 거리

백준 15686번(치킨 배달) 문제에서 장애물이 없는 격자의 맨해튼 거리를 이용해 그래프 탐색 없이 치킨집 M개 조합(DFS)을 뽑아 도시 치킨 거리의 최솟값을 구하는 풀이를 정리합니다.

#BOJ#백트래킹#브루트포스#조합#Java#Gold V
PS❯BOJ
2022-03-104 min read

[BOJ 16234] 인구 이동 (Java) - 다중 BFS 연합 탐색과 평균 인구 분배 시뮬레이션

백준 16234번(인구 이동) 문제에서 하루 단위로 국경선이 열리는 모든 연합을 BFS로 찾아 인구를 평균값으로 재분배하고, 더 이상 연합이 생성되지 않을 때까지 반복하는 시뮬레이션 풀이를 정리합니다.

#BOJ#BFS#구현#시뮬레이션#그래프탐색#Java#Gold V
PS❯BOJ
2022-03-094 min read

[BOJ 14442] 벽 부수고 이동하기 2 (Java) - 3차원 방문 배열 BFS와 큐 메모리 최적화

백준 14442번(벽 부수고 이동하기 2) 문제에서 최대 K개의 벽을 부수는 상태를 3차원 visit[y][x][k] 배열로 관리하는 BFS 풀이와 큐 폭발(메모리 초과)을 막기 위한 삽입 직전 방문 마킹 최적화를 정리합니다.

#BOJ#BFS#그래프탐색#최단경로#Java#Gold III
PS❯BOJ
2022-03-074 min read

[BOJ 3109] 빵집 (Java) - 그리디 방향 우선순위 DFS와 백트래킹 금지 원리

백준 3109번(빵집) 문제에서 가스관과 빵집을 연결하는 파이프라인 개수를 최대화하기 위해 [우상 → 우 → 우하] 순서의 그리디 DFS를 적용하고, 실패한 경로조차 visit을 복구하지 않는 이유를 정리합니다.

#BOJ#그리디#DFS#그래프탐색#Java#Gold II
Backend❯JPA
2022-03-033 min read

[JPA] Auditing @LastModifiedDate가 벌크성 쿼리에서 동작하지 않는 이유와 해결 방법

JPA Auditing의 @LastModifiedDate가 단건 수정에서는 정상 동작하지만 벌크성 UPDATE 쿼리에서는 동작하지 않는 원인과 영속성 컨텍스트 우회 문제를 분석하고, 실무에서 적용할 수 있는 해결 방법을 정리합니다.

#@LastModifiedDate#JPA Auditing#JPA#벌크성 쿼리#Dirty Checking
Backend❯JPA
2022-02-282 min read

[JPA] 영속성 컨텍스트와 엔티티 동일성(Identity) 보장 원리

토이 프로젝트 진행 중 궁금했던 JPA의 엔티티 동일성(==) 보장과 준영속(Detached) 상태에서 변경 감지(Dirty Checking)가 동작하지 않는 원인을 직접 테스트 코드로 검증하며 정리합니다.

#JPA 변경감지#JPA 엔티티 동일성#영속성 컨텍스트#준영속 상태
PS❯Programmers
2022-02-143 min read

[프로그래머스] 양궁대회 (Level 2, Java) - 중복 조합 DFS와 동점 우선순위 큐

2022 카카오 블라인드 공채 기출 '양궁대회' 문제에서 라이언이 화살 n발을 쏘는 모든 중복 조합을 DFS로 탐색하고, 최대 점수 차가 같을 때 가장 낮은 점수를 많이 맞힌 조합을 PriorityQueue로 선별하는 풀이를 정리합니다.

#Programmers#백트래킹#완전탐색#PriorityQueue#카카오기출#Java#Level 2
PS❯Programmers
2022-02-083 min read

[프로그래머스] 양과 늑대 (Level 3, Java) - 방문 가능 후보 리스트 기반 상태 DFS

2022 카카오 블라인드 공채 기출 '양과 늑대' 문제에서 부모 노드를 다시 거슬러 올라갈 수 있는 트리 탐색 특성을 해결하기 위해, 현재 방문 가능한 후보 노드 집합(nextPlan)을 상태로 전달하는 DFS 풀이를 정리합니다.

#Programmers#DFS#백트래킹#트리#카카오기출#Java#Level 3
PS❯Programmers
2022-02-053 min read

[프로그래머스] 주차 요금 계산 (Level 2, Java) - HashMap/TreeMap과 미출차 23:59 일괄 정산

2022 카카오 블라인드 공채 기출 '주차 요금 계산' 문제에서 차량별 입출차 시간을 HashMap과 TreeMap으로 누적 관리하고, 출차 기록이 없는 차량을 23:59 기준으로 정산해 단위 요금을 올림 계산하는 풀이를 정리합니다.

#Programmers#구현#해시#TreeMap#카카오기출#Java#Level 2
PS❯Programmers
2022-02-043 min read

[프로그래머스] k진수에서 소수 개수 구하기 - Java (2022 KAKAO BLIND RECRUITMENT)

정수를 k진수로 변환한 뒤 0을 기준으로 분리하여 조건에 맞는 소수의 개수를 판별하는 카카오 기출 풀이

#Programmers#소수 판별#진법 변환#문자열#Java
PS❯Programmers
2022-02-023 min read

[프로그래머스] 신고 결과 받기 - Java (2022 KAKAO BLIND RECRUITMENT)

각 유저별 중복 없는 신고 기록을 Map과 Set으로 관리하고 정지 메일 발송 횟수를 계산하는 카카오 기출 풀이

#Programmers#해시#Map#Set#구현#Java
PS❯BOJ
2022-01-313 min read

[BOJ 5430] AC - Java (덱 Deque 기반 R/D 연산 최적화)

매 뒤집기 연산(R) 시 실제 배열을 뒤집지 않고 방향 플래그와 양방향 Deque를 활용해 O(N)으로 해결하는 문제

#BOJ#자료구조#덱#Deque#파싱#Java
PS❯Programmers
2022-01-122 min read

[프로그래머스] 더 맵게 - Java (우선순위 큐 PriorityQueue / 힙 Heap)

최소 힙(PriorityQueue)을 이용하여 가장 작은 두 스코빌 지수를 반복 혼합하며 목표 지수를 달성하는 그리디/힙 풀이

#Programmers#우선순위 큐#PriorityQueue#힙#Java
PS❯BOJ
2021-12-054 min read

[BOJ 2580] 스도쿠 - Java (백트래킹 & 가지치기)

9x9 스도쿠 판에서 빈 칸을 행/열/3x3 미니 박스 유효성 검증을 거쳐 백트래킹으로 탐색 및 완성하는 풀이

#BOJ#백트래킹#구현#Java
PS❯BOJ
2021-12-033 min read

[BOJ 1826] 연료 채우기 - Java (그리디 & 최대 힙 PriorityQueue)

이동 가능한 거리 내의 모든 주유소 연료량을 최대 힙에 저장하고, 연료 소진 시 가장 많은 연료를 공급받는 그리디 접근법

#BOJ#그리디#우선순위 큐#PriorityQueue#Java
PS❯BOJ
2021-12-014 min read

[BOJ 2152] 여행 계획 세우기 - Java (SCC 강한 연결 요소 & 위상 정렬 DP)

단방향 도시 그래프에서 사이클을 SCC로 묶어 DAG로 변환한 뒤, 출발 SCC에서 도착 SCC까지 방문 가능한 최대 도시 수를 구하는 DP

#BOJ#SCC#강한 연결 요소#타잔#위상 정렬#DP#Java
PS❯BOJ
2021-11-292 min read

[BOJ 6603] 로또 - Java (백트래킹 조합 재귀 탐색)

주어진 k개의 숫자 중 6개를 오름차순으로 선택하는 모든 조합을 사전식 순서로 탐색하는 백트래킹 기초 풀이

#BOJ#백트래킹#재귀#조합#Java
PS❯BOJ
2021-11-293 min read

[BOJ 14889] 스타트와 링크 - Java (백트래킹 & 팀 조합 시뮬레이션)

N명의 사람을 N/2명씩 두 팀으로 나누는 모든 조합을 백트래킹으로 생성하고 팀 능력치 차이의 최솟값을 구하는 풀이

#BOJ#백트래킹#브루트포스#조합#Java
PS❯Programmers
2021-11-273 min read

[프로그래머스] 등굣길 - Java (동적 계획법 DP)

물에 잠긴 지역을 피해 집에서 학교까지 최단 경로의 개수를 구하는 2차원 격자 DP 풀이 (1,000,000,007 모듈러 연산)

#Programmers#동적계획법#DP#최단경로#Java
PS❯BOJ
2021-11-254 min read

[BOJ 3977] 축구 전술 - Java (SCC 강한 연결 요소 & 진입차수 0 판별)

모든 구역에 도달할 수 있는 시작 구역을 찾기 위해, SCC 압축 후 진입차수(in-degree)가 0인 컴포넌트가 유일한지 판별하는 문제

#BOJ#SCC#강한 연결 요소#타잔#위상 정렬#Java
PS❯BOJ
2021-11-253 min read

[BOJ 2109] 순회강연 - Java (그리디 & 우선순위 큐)

제한 날짜가 급한 순서로 정렬 후, 날짜별 최대 강연료를 최소 힙(PriorityQueue)으로 유지하며 최적의 강연을 선택하는 그리디 풀이

#BOJ#그리디#우선순위 큐#정렬#Java
PS❯BOJ
2021-11-234 min read

[BOJ 4196] 도미노 - Java (SCC 강한 연결 요소 & 진입차수 in-degree 카운트)

모든 도미노를 넘어뜨리기 위해 손으로 넘겨야 하는 최소 도미노 수는 SCC 압축 그래프에서 진입차수가 0인 컴포넌트의 수와 일치함을 이용한 풀이

#BOJ#SCC#강한 연결 요소#위상 정렬#코사라주#Java
PS❯BOJ
2021-11-235 min read

[BOJ 4013] ATM - Java (SCC 강한 연결 요소 & 위상 정렬 DAG DP)

현금 인출기 그래프에서 사이클을 하나의 노드로 묶는 SCC 압축을 수행하고, 위상 정렬 순서로 레스토랑 도달 가능 최대 금액을 구하는 DP

#BOJ#SCC#강한 연결 요소#위상 정렬#DP#Java
PS❯BOJ
2021-11-214 min read

[BOJ 1948] 임계경로 - Java (위상 정렬 Topological Sort & 역추적 Backtracking)

모든 사람이 도착점에 도달하는 최장 소요 시간을 위상 정렬로 구한 뒤, 도착점부터 역방향 BFS/DFS로 1분도 쉬지 않고 달려야 하는 모든 도로(임계 간선)를 중복 없이 카운트

#BOJ#위상 정렬#역추적#그래프#Java
PS❯Programmers
2021-11-173 min read

[프로그래머스] 거리두기 확인하기 - Java (2021 카카오 채용연계형 인턴십)

5x5 대기실에서 응시자 간 맨해튼 거리 2 이하 거리두기 수칙 준수 여부를 BFS 탐색으로 검증하는 카카오 기출 풀이

#Programmers#BFS#시뮬레이션#맨해튼거리#카카오#Java
PS❯Programmers
2021-11-164 min read

[프로그래머스] 순위 검색 - Java (조합 생성 & 이분 탐색 Binary Search)

지원자 정보로 가능한 16가지 조건 키를 조합하여 해시맵에 점수 리스트로 분류하고 이분 탐색(lower bound)으로 쿼리를 고속 처리하는 카카오 기출 풀이

#Programmers#이분탐색#해시#조합#카카오#Java
PS❯Programmers
2021-11-153 min read

[프로그래머스] 메뉴 리뉴얼 - Java (백트래킹 조합 & 해시맵 빈도수 계산)

각 손님의 주문에서 코스 요리 길이별 조합을 생성하여 빈도수를 카운트하고 최소 2명 이상 주문한 최빈 메뉴 구성을 선별하는 카카오 기출 풀이

#Programmers#조합#해시#백트래킹#카카오#Java
PS❯Programmers
2021-11-133 min read

[프로그래머스] 다단계 칫솔 판매 - Java (트리 구조 부모 전파 & 10% 분배)

판매원 조직 트리에서 판매 수익의 10%를 추천인에게 반복 분배하며 1원 미만의 원 단위 절사 규칙을 반영하는 2021 Dev-Matching 풀이

#Programmers#트리#해시#재귀#시뮬레이션#Java
PS❯Programmers
2021-11-133 min read

[프로그래머스] 합승 택시 요금 - Java (다익스트라 & 플로이드 워셜 최단경로)

출발점 S에서 합승 종료 지점 X까지 동승 후 각각 목적지 A, B로 이동하는 경로의 최소 요금을 다익스트라(Dijkstra)로 탐색하는 풀이

#Programmers#최단경로#다익스트라#플로이드워셜#카카오#Java
PS❯BOJ
2021-11-113 min read

[BOJ 2957] 이진 탐색 트리 - Java (TreeSet 기반 삽입 깊이 계산)

실제 이진 탐색 트리를 생성하지 않고, TreeSet의 lower/higher 연산으로 부모 후보를 찾아 깊이(depth)를 $O(log N)$에 갱신하는 문제

#BOJ#이진탐색트리#TreeSet#자료구조#Java
PS❯BOJ
2021-11-103 min read

[BOJ 15681] 트리와 쿼리 - Java (트리 DP & 서브트리 정점 수 메모이제이션)

루트가 있는 트리에서 후위 순회 DFS를 통해 각 정점을 루트로 하는 서브트리의 크기를 $O(V)$에 전처리하고 $O(1)$ 쿼리를 처리하는 트리 DP 풀이

#BOJ#트리#트리DP#DFS#Java
PS❯BOJ
2021-11-083 min read

[BOJ 17831] 대기업 승범이네 - Java (트리 DP & 최대 가중치 매칭)

회사 조직 트리에서 멘토-멘티 쌍의 곱의 합을 최대화하기 위해, 노드가 멘토링에 포함될 때와 아닐 때의 상태를 나누어 전이하는 트리 DP 풀이

#BOJ#트리#트리DP#동적계획법#Java
PS❯BOJ
2021-11-083 min read

[BOJ 1135] 뉴스 전하기 - Java (트리 그리디 & 서브트리 전파 정렬)

민식이부터 모든 부하 직원에게 뉴스를 전파할 때, 전파 시간이 오래 걸리는 서브트리 자식부터 먼저 통화하도록 정렬하는 그리디 트리 탐색

#BOJ#트리#그리디#정렬#DFS#Java
PS❯BOJ
2021-11-074 min read

[BOJ 3055] 탈출 - Java (너비 우선 탐색 BFS & 동시 시뮬레이션)

매 분마다 물이 먼저 번진 뒤 고슴도치가 이동 가능한 인접 칸으로 피신하며 비버의 굴로 탈출하는 최단 시간 2중 BFS 풀이

#BOJ#BFS#너비우선탐색#시뮬레이션#그래프#Java
PS❯BOJ
2021-11-054 min read

[BOJ 2307] 도로검문 - Java (다익스트라 Dijkstra & 최단경로 간선 차단)

원래 최단경로에 속한 간선들만 하나씩 제거하며 다익스트라를 재수행하여 경찰이 검문으로 지연시킬 수 있는 최대 지연 시간을 구하는 풀이

#BOJ#다익스트라#최단경로#역추적#그래프#Java
PS❯Programmers
2021-11-032 min read

[프로그래머스] 여행경로 - Java (DFS 백트래킹 & 알파벳 사전순 경로)

주어진 모든 항공권을 남김없이 사용하여 'ICN'에서 출발하는 여행 경로 중 알파벳 순서가 가장 앞서는 완주 경로를 DFS로 탐색하는 풀이

#Programmers#DFS#백트래킹#정렬#Java
PS❯BOJ
2021-11-022 min read

[BOJ 1781] 컵라면 - Java (그리디 & 최소 힙 PriorityQueue)

데드라인 오름차순으로 정렬한 뒤 문제를 최소 힙에 추가하고, 힙 크기가 데드라인을 초과할 때마다 최소 라면 문제를 방출하는 그리디 접근법

#BOJ#그리디#우선순위 큐#PriorityQueue#정렬#Java
PS❯BOJ
2021-11-013 min read

[BOJ 1461] 도서관 - Java (그리디 정렬 & 양수/음수 분할 탐색)

음수 좌표와 양수 좌표를 분리하여 절대값이 큰 책부터 $M$권씩 묶어 왕복하고, 가장 멀리 있는 책은 돌아오지 않는 편도로 처리하여 이동 걸음을 최소화

#BOJ#그리디#정렬#Java
PS❯BOJ
2021-10-313 min read

[BOJ 11400] 단절선 - Java (DFS Spanning Tree & Tarjan 알고리즘)

무향 연결 그래프에서 DFS 스패닝 트리를 순회하며 자식 서브트리가 조상 노드로 우회할 수 없는 간선 ($low[v] > order[u]$)을 찾는 단절선 알고리즘

#BOJ#단절선#그래프#DFS#Tarjan#Java
PS❯BOJ
2021-10-313 min read

[BOJ 11266] 단절점 - Java (DFS Spanning Tree & Tarjan 알고리즘)

무향 연결 그래프에서 특정 정점을 제거했을 때 그래프가 둘 이상으로 나뉘는지 DFS 방문 순서와 역방향 간선 도달 가능성을 비교하여 판별하는 단절점 알고리즘

#BOJ#단절점#그래프#DFS#Tarjan#Java
PS❯BOJ
2021-10-302 min read

[BOJ 11497] 통나무 건너뛰기 - Java (그리디 정렬 & 양방향 지그재그 배치)

원형으로 배치된 통나무들 사이의 인접 높이 차를 최소화하기 위해, 정렬된 통나무를 좌우 번갈아 가며 배치하는 그리디 풀이

#BOJ#그리디#정렬#Java
PS❯BOJ
2021-10-293 min read

[BOJ 13904] 과제 - Java (그리디 & 역순 배치 / 우선순위 큐)

점수가 높은 과제부터 마감일에 가장 가까운 빈 날짜에 우선 배정하거나, 마감일 기준 최소 힙으로 최적 과제를 선별하는 탐욕법 풀이

#BOJ#그리디#우선순위 큐#정렬#Java
PS❯BOJ
2021-10-283 min read

[BOJ 9576] 책 나눠주기 - Java (그리디 정렬 & 마감 번호 우선 배정)

책 범위 [a, b]를 요청하는 학부생들을 b(마감 번호) 오름차순으로 정렬하여 남은 책 중 가장 작은 번호를 탐욕적으로 배정하는 풀이

#BOJ#그리디#정렬#Java
PS❯BOJ
2021-10-283 min read

[BOJ 1092] 배 - Java (그리디 정렬 & 크레인 순차 배정)

크레인과 박스를 모두 내림차순 정렬한 뒤, 매 분마다 각 크레인이 들 수 있는 가장 무거운 박스를 하나씩 옮기며 총 소요 시간을 최소화하는 풀이

#BOJ#그리디#정렬#Java
PS❯BOJ
2021-10-263 min read

[BOJ 1744] 수 묶기 - Java (그리디 정렬 & 양수/음수/0/1 분류)

양수는 큰 수끼리 곱하고, 1은 더하는 것이 이득이며, 음수는 절댓값이 큰 수끼리 곱하거나 0으로 상쇄시키는 수 묶기 최적화 풀이

#BOJ#그리디#정렬#수학#Java
PS❯BOJ
2021-10-262 min read

[BOJ 1715] 카드 정렬하기 - Java (최소 힙 PriorityQueue / 허프만 코딩)

항상 가장 작은 두 카드 묶음을 꺼내 합치고 다시 힙에 넣는 과정을 반복하여 누적 비교 횟수를 최소화하는 허프만 트리 구조의 그리디 풀이

#BOJ#그리디#우선순위 큐#힙#Java
PS❯BOJ
2021-10-263 min read

[BOJ 1202] 보석 도둑 - Java (그리디 정렬 & 최대 힙 PriorityQueue)

가방과 보석을 무게 오름차순으로 정렬한 뒤, 작은 가방부터 담을 수 있는 모든 보석을 최대 힙에 모아 가장 비싼 보석을 매칭하는 전형적인 탐욕법

#BOJ#그리디#우선순위 큐#정렬#Java
PS❯Programmers
2021-10-252 min read

[프로그래머스] 피로도 - Java (완전 탐색 & 순열 백트래킹)

던전 수가 최대 8개이므로 가능한 모든 방문 순서(8! = 40,320가지)를 백트래킹으로 탐색하여 유저가 탐험할 수 있는 최대 던전 수를 계산하는 풀이

#Programmers#완전탐색#백트래킹#순열#Java
PS❯BOJ
2021-10-252 min read

[BOJ 1339] 단어 수학 - Java (자릿수 가중치 계산 & 그리디)

각 알파벳이 등장하는 자릿수의 합을 10의 거듭제곱 가중치로 환산하여, 가중치가 가장 큰 알파벳부터 9부터 0까지 높은 숫자를 부여하는 풀이

#BOJ#그리디#정렬#문자열#Java
PS❯BOJ
2021-10-243 min read

[BOJ 1041] 주사위 - Java (그리디 & 3면/2면/1면 노출 최솟값)

NxNxN 정육면체에서 꼭짓점(3면 노출 4개), 모서리(2면 노출), 면(1면 노출) 위치별로 마주보는 면을 피해 최소 눈금 조합을 곱해 합산하는 풀이

#BOJ#그리디#수학#Java
PS❯BOJ
2021-10-224 min read

[BOJ 16236] 아기 상어 - Java (BFS 최단거리 & 먹이 우선순위 시뮬레이션)

현재 크기보다 작은 물고기 중 최단거리, 가장 위, 가장 왼쪽 순으로 우선순위가 높은 먹이를 BFS로 찾아 이동하고 성장하는 전형적인 삼성 기출 시뮬레이션

#BOJ#BFS#시뮬레이션#구현#Java
PS❯BOJ
2021-10-213 min read

[BOJ 10971] 외판원 순회 2 - Java (외판원 문제 TSP & 백트래킹 가지치기)

도시 수 N이 최대 10이므로 백트래킹 재귀를 통해 모든 순회 경로를 탐색하되, 누적 비용이 현재 최솟값 이상이면 탐색을 중단하는 가지치기(Pruning) 풀이

#BOJ#백트래킹#브루트포스#TSP#Java
PS❯Programmers
2021-10-202 min read

[프로그래머스] 소수 찾기 - Java (순열 조합 & 에라토스테네스의 체)

주어진 숫자 조각들로 만들 수 있는 모든 수열을 백트래킹 순열로 생성하여 Set에 담고, 각 숫자가 소수인지 판별하여 개수를 세는 완전탐색 풀이

#Programmers#완전탐색#소수#순열#Set#Java
PS❯Programmers
2021-10-194 min read

[프로그래머스] 아이템 줍기 - Java (2배 좌표 확대 BFS & 테두리 추적)

직사각형들이 겹쳤을 때 인접한 모서리가 1칸 차이로 붙어 경로가 왜곡되는 문제를 해결하기 위해 좌표계를 2배로 확대하여 BFS로 테두리 최단거리를 탐색하는 풀이

#Programmers#BFS#좌표확대#시뮬레이션#Java
PS❯BOJ
2021-10-173 min read

[BOJ 9466] 텀 프로젝트 - Java (방향 그래프 사이클 탐색 DFS)

학생들의 지목 관계에서 발생하는 단방향 사이클을 DFS 방문 완료 배열로 검출하여 프로젝트 팀에 속하지 못하는 학생 수를 구하는 풀이

#BOJ#그래프#DFS#사이클#Java
PS❯BOJ
2021-10-144 min read

[BOJ 2146] 다리 만들기 - Java (BFS 섬 라벨링 & 최단 다리 건설)

DFS/BFS로 각 섬을 고유 번호로 라벨링한 뒤, 모든 섬의 해안선에서 동시 멀티 소스 BFS를 확장하여 서로 다른 섬을 잇는 가장 짧은 다리 길이를 구하는 풀이

#BOJ#BFS#그래프#최단거리#Java
PS❯BOJ
2021-10-132 min read

[BOJ 9465] 스티커 - Java (동적 계획법 2행 DP)

스티커 한 장을 뜯으면 상하좌우를 사용할 수 없으므로, 대각선 이전 열과 2칸 이전 열의 최댓값을 조합하여 누적 점수를 최대화하는 2행 DP 풀이

#BOJ#DP#동적계획법#Java
PS❯BOJ
2021-10-133 min read

[BOJ 11054] 가장 긴 바이토닉 부분 수열 - Java (LIS + LDS 동적 계획법)

왼쪽에서 오른쪽으로의 최장 증가 부분 수열(LIS)과 오른쪽에서 왼쪽으로의 최장 감소 부분 수열(LDS)의 길이를 각각 DP로 구해 합의 최댓값을 계산하는 풀이

#BOJ#DP#LIS#LDS#바이토닉#Java
PS❯Programmers
2021-10-112 min read

[프로그래머스] 디스크 컨트롤러 - Java (SJF 스케줄링 & 최소 힙 PriorityQueue)

현재 시점에 요청이 들어와 있는 작업들 중 소요 시간이 가장 짧은 작업을 먼저 처리(SJF)하여 각 작업의 요청부터 종료까지 걸린 시간의 평균을 최소화하는 풀이

#Programmers#우선순위 큐#그리디#스케줄링#Java
PS❯BOJ
2021-10-083 min read

[BOJ 2150] Strongly Connected Component - Java (Kosaraju & Tarjan SCC 기초)

방향 그래프에서 상호 도달 가능한 정점들의 집합인 SCC(강한 연결 요소)를 코사라주 또는 타잔 알고리즘을 통해 O(V+E)로 분리하고 정렬 출력하는 기본 풀이

#BOJ#SCC#강한연결요소#Kosaraju#Tarjan#Java
PS❯Programmers
2021-10-053 min read

[프로그래머스] 전력망을 둘로 나누기 - Java (트리 간선 절단 & BFS 노드 수 차이 최소화)

N-1개의 전선(간선)을 하나씩 끊어보고 생성된 두 서브트리의 송전탑 개수를 BFS로 측정하여 두 전력망의 송전탑 개수 차이의 최솟값을 구하는 완전탐색 풀이

#Programmers#트리#BFS#완전탐색#Java
PS❯BOJ
2021-10-043 min read

[BOJ 19581] 두 번째 트리의 지름 - Java (트리 지름 양 끝점 2회 BFS/DFS)

임의의 노드에서 가장 먼 점 u, u에서 가장 먼 점 v를 찾아 트리의 지름을 구성한 뒤, u를 제외한 트리 지름과 v를 제외한 트리 지름 중 최댓값으로 두 번째 지름을 구하는 풀이

#BOJ#트리#트리지름#BFS#Java
PS❯BOJ
2021-10-024 min read

[BOJ 5719] 거의 최단 경로 - Java (다익스트라 & 역추적 간선 삭제)

다익스트라로 시작점에서 도착점까지의 최단경로를 구한 뒤, 도착점에서 역방향 BFS를 수행하여 최단경로에 사용된 모든 간선을 삭제하고 다익스트라를 재실행하는 풀이

#BOJ#다익스트라#최단경로#역추적#BFS#Java
PS❯BOJ
2021-09-302 min read

[BOJ 2533] 사회망 서비스(SNS) - Java (트리 DP & 최소 얼리어답터)

정점 u가 얼리어답터일 때(자식의 최소 상태 합)와 아닐 때(자식은 반드시 얼리어답터)의 2가지 상태로 전이하는 전형적인 트리 동적 계획법(Tree DP) 풀이

#BOJ#트리#트리DP#동적계획법#Java
PS❯BOJ
2021-09-293 min read

[BOJ 9252] LCS 2 - Java (최장 공통 부분 수열 & DP 테이블 역추적)

2차원 DP 테이블로 두 문자열의 최장 공통 부분 수열(LCS) 길이를 구한 뒤, (len1, len2)에서 역방향으로 대각선 전이를 추적하여 실제 LCS 문자열을 복원하는 풀이

#BOJ#DP#LCS#문자열#역추적#Java
PS❯BOJ
2021-09-283 min read

[BOJ 1005] ACM Craft - Java (위상 정렬 Topological Sort & DAG DP)

건물 건설 선후 관계 그래프(DAG)에서 진입차수가 0인 건물부터 큐에 넣고 위상 정렬을 수행하며 각 건물 완성에 필요한 최장 소요 시간을 갱신하는 풀이

#BOJ#위상정렬#DP#그래프#Java
PS❯BOJ
2021-09-272 min read

[BOJ 14002] 가장 긴 증가하는 부분 수열 4 - Java (LIS DP & 역추적)

O(N^2) 동적 계획법으로 최장 증가 부분 수열의 길이와 각 원소의 이전 인덱스(prev)를 기록한 뒤, 역추적 스택을 통해 실제 LIS 원소들을 출력하는 풀이

#BOJ#DP#LIS#역추적#Java
PS❯BOJ
2021-09-242 min read

[BOJ 1365] 꼬인 전깃줄 - Java (LIS 이분 탐색 Binary Search O(N log N))

전깃줄이 서로 꼬이지 않으려면 연결 번호가 증가 수열을 이루어야 하므로, O(N log N) 이분 탐색(lower bound) LIS를 구해 N - LIS_len을 잘라내는 풀이

#BOJ#LIS#이분탐색#그리디#Java
PS❯BOJ
2021-09-232 min read

[BOJ 11722] 가장 긴 감소하는 부분 수열 - Java (LDS 동적 계획법)

수열의 각 위치 i에 대해 자신보다 앞선 j 중 값이 더 큰 원소의 DP 값을 참조하여 가장 긴 감소하는 부분 수열(LDS)의 최대 길이를 구하는 풀이

#BOJ#DP#LDS#동적계획법#Java
PS❯BOJ
2021-09-222 min read

[BOJ 12865] 평범한 배낭 - Java (0-1 배낭 문제 Knapsack DP)

무게 한도 K 이하로 담을 수 있는 보석 가치의 최댓값을 구하는 전형적인 0-1 Knapsack 1차원/2차원 동적 계획법 풀이

#BOJ#DP#배낭문제#Knapsack#Java
PS❯BOJ
2021-09-182 min read

[BOJ 2293] 동전 1 - Java (동적 계획법 중복 방지 1차원 DP)

n가지 종류의 동전으로 k원을 만드는 경우의 수를 구할 때, 동전 종류를 바깥쪽 루프로 두어 조합(순서 무관) 중복을 방지하는 1차원 DP 풀이

#BOJ#DP#동적계획법#Java
PS❯BOJ
2021-09-182 min read

[BOJ 11057] 오르막 수 - Java (동적 계획법 & 10007 모듈러)

길이가 N이고 인접한 수가 같거나 증가하는 오르막 수의 개수를 구하기 위해 dp[길이][끝자리] 점화식과 10,007 모듈러를 적용한 풀이

#BOJ#DP#동적계획법#수학#Java
PS❯BOJ
2021-09-172 min read

[BOJ 1932] 정수 삼각형 - Java (동적 계획법 바텀업 DP)

삼각형 꼭대기부터 아래로 내려가며 인접한 대각선 왼쪽/오른쪽 중 더 큰 값을 누적하여 바닥에서 최대 합 경로를 구하는 DP 풀이

#BOJ#DP#동적계획법#삼각형#Java
PS❯BOJ
2021-09-162 min read

[BOJ 2579] 계단 오르기 - Java (연속 3계단 방지 동적 계획법)

연속된 세 계단을 밟을 수 없고 마지막 계단을 반드시 밟아야 할 때, 1칸 전+2칸 전 또는 2칸 전에서 도약하는 2가지 전이를 고려한 DP 풀이

#BOJ#DP#동적계획법#Java
PS❯BOJ
2021-09-162 min read

[BOJ 1149] RGB거리 - Java (인접 집 다른 색 칠하기 2차원 DP)

이웃한 집이 서로 다른 색(R, G, B)을 칠해야 할 때, 이전 집의 다른 두 색 중 최소 비용을 취하며 N번 집까지 칠하는 최소 비용 DP

#BOJ#DP#동적계획법#Java
PS❯BOJ
2021-09-152 min read

[BOJ 2156] 포도주 시식 - Java (연속 3잔 금지 동적 계획법)

계단 오르기와 달리 마지막 잔을 마시지 않아도 되는 포도주 시식 규칙을 반영하여, 이전 잔을 마시지 않는 경우(dp[i-1])를 포함한 3가지 점화식 풀이

#BOJ#DP#동적계획법#Java
PS❯BOJ
2021-09-142 min read

[BOJ 1463 & 12852] 1로 만들기 1, 2 - Java (동적 계획법 & 경로 역추적)

정수 N을 3으로 나누기, 2로 나누기, 1 빼기 3가지 연산으로 1을 만드는 최소 연산 횟수 DP와 이전 숫자를 역추적하여 실제 연산 경로를 출력하는 풀이

#BOJ#DP#동적계획법#역추적#Java
PS❯BOJ
2021-09-132 min read

[BOJ 1946] 신입 사원 - Java (그리디 정렬 & 1차원 커트라인 갱신)

서류 성적 순위로 지원자들을 정렬한 뒤, 면접 성적의 역대 최고 순위(최솟값)를 갱신하며 다른 모든 지원자에게 뒤처지지 않는 선발 인원을 세는 그리디 풀이

#BOJ#그리디#정렬#Java
PS❯BOJ
2021-09-092 min read

[BOJ 2252] 줄 세우기 - Java (위상 정렬 Topological Sort)

키 비교 결과로 주어지는 학생 간 선후 관계(DAG)에서 진입차수가 0인 학생부터 큐에 넣고 순서대로 방문하여 전체 학생을 일렬로 줄 세우는 기본 위상 정렬 풀이

#BOJ#위상정렬#그래프#큐#Java
PS❯BOJ
2021-09-093 min read

[BOJ 1197] 최소 스패닝 트리 - Java (크루스칼 Kruskal & 프림 Prim MST)

그래프의 모든 정점을 최소 비용으로 연결하는 최소 신장 트리(MST)를 간선 가중치 오름차순 정렬 및 Union-Find를 활용한 크루스칼(Kruskal) 알고리즘으로 해결

#BOJ#MST#크루스칼#프림#UnionFind#Java
PS❯BOJ
2021-09-082 min read

[BOJ 3273] 두 수의 합 - Java (정렬 & 양 끝 투 포인터 Two Pointers)

서로 다른 n개의 정수를 오름차순 정렬한 뒤, 양 끝단에 포인터(left, right)를 두고 합을 x와 비교하여 범위를 좁히며 O(N log N)으로 쌍의 수를 찾는 풀이

#BOJ#투포인터#정렬#Java
PS❯BOJ
2021-09-082 min read

[BOJ 1806] 부분합 - Java (투 포인터 Two Pointers & 연속 부분합)

연속된 수열의 부분합이 S 이상이 되는 가장 짧은 부분합 구간 길이를 두 포인터(left, right)의 선형 전진을 통해 O(N)으로 구하는 풀이

#BOJ#투포인터#누적합#부분합#Java
PS❯BOJ
2021-09-062 min read

[BOJ 1920] 수 찾기 - Java (이분 탐색 Binary Search)

N개의 정수를 오름차순 정렬한 뒤, M개의 쿼리 숫자가 존재하는지 O(log N) 이분 탐색(Binary Search)으로 빠르게 판별하는 기본 탐색 풀이

#BOJ#이분탐색#자료구조#Java
PS❯BOJ
2021-09-062 min read

[BOJ 1654] 랜선 자르기 - Java (매개 변수 탐색 Parametric Search & 이분 탐색)

길이 L로 랜선을 잘랐을 때 N개 이상을 만들 수 있는가?라는 결정 문제로 변환하여, L의 최댓값을 1부터 2^31-1까지 long 범위 이분 탐색으로 구하는 풀이

#BOJ#이분탐색#매개변수탐색#Java
PS❯BOJ
2021-09-063 min read

[BOJ 10816] 숫자 카드 2 - Java (Lower Bound & Upper Bound 이분 탐색)

상근이가 가진 숫자 카드를 정렬한 뒤, 찾고자 하는 수의 첫 등장 인덱스(Lower Bound)와 초과 인덱스(Upper Bound)의 차이로 개수를 O(log N)에 고속 계산하는 풀이

#BOJ#이분탐색#LowerBound#UpperBound#해시#Java
PS❯BOJ
2021-09-023 min read

[BOJ 1916] 최소비용 구하기 - Java (다익스트라 Dijkstra 최단경로)

도시 간 버스 비용이 주어졌을 때, 출발 도시에서 도착 도시까지 이동하는 최소 비용을 우선순위 큐(PriorityQueue) 기반 다익스트라로 해결하는 기본 풀이

#BOJ#다익스트라#최단경로#그래프#Java
PS❯BOJ
2021-09-024 min read

[BOJ 1162] 도로포장 - Java (다익스트라 Dijkstra & 2차원 DP 상태 공간)

최대 K개의 도로를 포장하여 비용을 0으로 만들 수 있을 때, dist[정점][포장한 도로 수] 2차원 상태 공간을 정의하여 다익스트라로 최소 시간을 구하는 풀이

#BOJ#다익스트라#최단경로#DP#Java
PS❯BOJ
2021-09-013 min read

[BOJ 1753] 최단경로 - Java (단일 시작점 다익스트라 Dijkstra)

방향 그래프에서 주어진 시작점에서 다른 모든 정점으로의 최단 경로를 우선순위 큐 기반 다익스트라 알고리즘으로 O((V+E)log V)에 구하는 대표 풀이

#BOJ#다익스트라#최단경로#그래프#Java
PS❯BOJ
2021-08-304 min read

[BOJ 1194] 달이 차오른다, 가자. - Java (BFS & 비트마스킹 열쇠 상태 공간)

열쇠(a~f) 보유 상태를 6비트 정수로 표현하여 visited[r][c][keyState] 3차원 방문 배열을 관리하며 탈출구에 도달하는 최단 이동 횟수 BFS 풀이

#BOJ#BFS#비트마스킹#시뮬레이션#Java
PS❯BOJ
2021-08-273 min read

[BOJ 14503] 로봇 청소기 - Java (시뮬레이션 & 방향 전환 구현)

현재 위치 청소, 반시계 90도 회전 탐색, 4방향 청소 불가 시 후진 또는 종료 규칙을 충실히 구현하는 삼성 SW 역량테스트 기출 시뮬레이션

#BOJ#시뮬레이션#구현#Java
PS❯BOJ
2021-08-263 min read

[BOJ 1966] 프린터 큐 - Java (큐 Queue 시뮬레이션)

대기 중인 문서들 중 중요도가 더 높은 문서가 있다면 큐의 뒤로 재배치하는 우선순위 인쇄 큐 시뮬레이션 풀이

#BOJ#자료구조#큐#시뮬레이션#Java
PS❯BOJ
2021-08-254 min read

[BOJ 16197] 두 동전 - Java (BFS / 백트래킹 4방향 이동)

두 동전을 동시에 4방향으로 움직여 정확히 하나의 동전만 보드 밖으로 떨어뜨리는 최소 버튼 클릭 횟수를 BFS/백트래킹(최대 10회)으로 구하는 풀이

#BOJ#BFS#백트래킹#시뮬레이션#Java
PS❯BOJ
2021-08-244 min read

[BOJ 16930] 달리기 - Java (BFS 최적화 & 최대 K칸 점프)

1초에 한 방향으로 최대 K칸까지 이동할 수 있는 격자에서, 이미 더 빠른 시간에 도달한 칸을 만났을 때 탐색을 조기 종료하는 BFS 시간초과 방지 최적화

#BOJ#BFS#최적화#플래티넘#Java
PS❯BOJ
2021-08-232 min read

[BOJ 15989] 1, 2, 3 더하기 4 - Java (동적 계획법 순서 없는 분할 DP)

수의 순서만 다른 것은 같은 것으로 간주하므로 1, 2, 3을 차례대로 사용하는 중복 조합 1차원 DP로 n을 만드는 경우의 수를 O(N)에 구하는 풀이

#BOJ#DP#동적계획법#Java
PS❯BOJ
2021-08-223 min read

[BOJ 1890] 점프 - Java (2차원 동적 계획법 DP)

칸에 적힌 수만큼 오른쪽 또는 아래쪽으로만 점프할 수 있을 때, (0, 0)에서 (N-1, N-1)까지 도달 가능한 경로의 총 개수를 long DP로 누적 합산

#BOJ#DP#동적계획법#Java
PS❯BOJ
2021-08-213 min read

[BOJ 1303] 전쟁 - 전투 - Java (BFS / DFS 연결 요소 뭉치 크기 제곱 합)

우리 편(W)과 적국(B) 병사들이 상하좌우로 뭉쳐있을 때 N명이 뭉치면 N^2의 위력을 낼 때, BFS로 연결 컴포넌트 크기를 구해 각 진영의 위력 합을 계산

#BOJ#BFS#DFS#그래프#Java
PS❯BOJ
2021-08-203 min read

[BOJ 14888] 연산자 끼워넣기 - Java (백트래킹 순열 & 최댓값/최솟값 갱신)

덧셈, 뺄셈, 곱셈, 나눗셈 연산자 카드를 N-1개의 수 사이에 끼워넣는 모든 조합을 재귀 백트래킹으로 탐색하여 식의 계산 결과 최댓값과 최솟값을 구하는 풀이

#BOJ#백트래킹#브루트포스#Java
PS❯Programmers
2021-08-093 min read

[프로그래머스] 섬 연결하기 - Java (최소 신장 트리 MST & 크루스칼 Kruskal)

모든 섬이 서로 통행 가능하도록 다리를 건설하는 최소 비용을 간선 가중치 오름차순 정렬 및 Union-Find를 활용한 크루스칼 알고리즘으로 해결하는 풀이

#Programmers#MST#크루스칼#UnionFind#그리디#Java
PS❯BOJ
2021-07-124 min read

[BOJ 9328] 열쇠 - Java (BFS & 비트마스킹 / 대기 큐 열쇠 시뮬레이션)

빌딩 외곽을 패딩하여 어디서든 진입 가능하게 하고, 열쇠가 없어 못 열었던 문을 새로운 열쇠 획득 시 대기 큐에서 꺼내 재진입하는 BFS 문서 훔치기 풀이

#BOJ#BFS#비트마스킹#그래프#Java
PS❯BOJ
2021-06-282 min read

[BOJ 5014] 스타트링크 - Java (1차원 너비 우선 탐색 BFS)

총 F층 건물에서 S층에서 G층으로 U층 위 또는 D층 아래로만 이동할 수 있는 엘리베이터를 탈 때 누르는 최소 버튼 수를 1차원 BFS로 탐색하는 풀이

#BOJ#BFS#그래프#최단거리#Java
PS❯BOJ
2021-06-153 min read

[BOJ 1068] 트리 - Java (트리 노드 삭제 & 리프 노드 카운트 DFS)

특정 노드를 삭제했을 때 그 서브트리를 모두 배제하고, 루트 노드부터 DFS를 돌며 자식이 없거나 유일한 자식이 삭제된 리프 노드의 개수를 세는 풀이

#BOJ#트리#DFS#그래프#Java
PS❯BOJ
2021-06-143 min read

[BOJ 1937] 욕심쟁이 판다 - Java (DFS & 2차원 DP 메모이제이션)

판다가 대나무가 더 많은 인접 칸으로만 이동할 수 있을 때, dp[r][c]를 해당 칸에서 출발하여 살 수 있는 최대 일수로 메모이제이션하여 최장 경로를 구하는 풀이

#BOJ#DFS#DP#메모이제이션#Java