| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| 16 | 17 | 18 | 19 | 20 | 21 | 22 |
| 23 | 24 | 25 | 26 | 27 | 28 | 29 |
| 30 | 31 |
- 백트래킹
- 완전탐색
- 자바의 정석
- 동적계획법
- 분할정복
- 스프링부트 배포
- 프로그래머스
- 알고리즘
- Ubuntu서버
- 자바의정석
- spring security 설정
- 둘만의 암호 자바
- hackerrank
- 이분탐색
- BFS
- 리눅스
- 서버초기설정
- 그리디
- 오블완
- 티스토리챌린지
- 코딩테스트
- greedy
- Comparator
- 프로그래머스Lv2
- DP
- DFS
- spring security
- 혼공얄코
- 자바
- java
- Today
- Total
목록java (24)
쉽게 쉽게
📌 핵심 요약탐색 범위는 1 ~ n/2 — n/2를 포함해야 한다. 목차1 문제 정리Programmers #60057문자열 압축1 ≤ s.length() ≤ 1000난이도: Level 2문자열을 앞에서부터 일정한 단위로 잘라, 같은 조각이 연속으로 반복되면 반복 횟수 + 조각 형태로 압축한다. 단위 길이를 1 이상 자유롭게 정할 수 있을 때, 압축한 결과 중 가장 짧은 것의 길이를 반환한다.압축 규칙단위 길이 k를 정하고 문자열을 앞에서부터 k글자씩 자른다.직전 조각과 같은 조각이 연속되면 개수를 센다.다른 조각이 나오면 (개수)(조각) 형태로 기록한다. 개수가 1이면 숫자는 붙이지 않는다.마지막 조각은 k보다 짧을 수 있으며, 그대로 남긴다.2 완전탐색으로 방향을 정했다k 하나하나를 전부 시도하는 것..
📌 핵심 요약BFS의 출발점은 외부 — 격자 안의 임의 칸이 아니라 창고 바깥에서 빈칸('.')을 타고 퍼진다. 도달한 빈칸 영역에 인접한 target 컨테이너가 지게차로 꺼낼 수 있는 컨테이너다.판정과 반영의 분리 — 접근 가능 판정은 요청 시점의 상태 기준이다. BFS 도중 제거하면 같은 요청에서 연쇄 제거가 일어나므로, removeList에 기록만 하고 BFS 종료 후 한꺼번에 반영한다.패딩 vs 무패딩 — 패딩은 외부에 좌표를 부여해 시작점을 하나로 만들고 가장자리 특수 케이스를 없앤다. 무패딩은 좌표 보정이 없는 대신 멀티 소스 BFS와 테두리 target 즉시 제거 처리가 필요하다. 목차1 문제 이해Programmers #388353지게차와 크레인2 ≤ n, m ≤ 50 · requests ..
📌 핵심 요약완전 탐색으로 충분한 규모 — n ≤ 30이므로 전체 조합은 C(30, 5) = 142,506개. 모든 조합을 생성해 검사해도 시간 안에 여유롭게 통과한다.조합 DFS의 start 규칙 — 다음 재귀의 시작점은 항상 "방금 고른 값 + 1"이다. 루프의 시작값(start) 기준으로 넘기면 중복이나 누락이 발생한다.가지치기의 근거 — 일치 개수는 증가만 하므로, 어떤 쿼리의 일치 개수가 ans[i]를 초과하는 순간 그 가지는 탈락이 확정된다. 완성 전에 컷할 수 있다. 목차1 문제 이해Programmers #388352비밀 코드 해독10 ≤ n ≤ 30 · 1 ≤ m ≤ 10난이도: Lv. 21부터 n까지의 서로 다른 정수 5개가 오름차순으로 정렬된 비밀 코드가 있다. m번의 시도마다 5개의..
📌 핵심 요약재귀 구조 — n개 문제는 “n-1개 치우기 → 가장 큰 원판 옮기기 → n-1개 다시 옮기기” 3단계로 강제된다역할 교대 — 재귀 호출마다 목적지(to)와 보조 기둥(via)이 서로 뒤바뀐다. 인자 순서가 핵심이동 횟수 — 이동횟수(n) = 2 × 이동횟수(n-1) + 1, 따라서 총 2ⁿ-1회 목차1 문제 소개Programmers #12946하노이의 탑n ≤ 15 · 원판은 큰 것 위에 작은 것만난이도: Level 2n개의 원판을 1번 기둥에서 3번 기둥으로 옮기는 최소 이동 순서를 [from, to] 쌍의 배열로 반환하는 문제다. 한 번에 한 개의 원판만 옮길 수 있고, 큰 원판을 작은 원판 위에 올릴 수 없다.풀이 과정가장 큰 원판을 옮기려면 위의 n-1개가 먼저 보조 기둥으로 비켜..
📌 핵심 요약상태 정의 — dp[i][j] = (i, j)를 오른쪽 아래 꼭짓점으로 하는 가장 큰 정사각형의 한 변 길이점화식 — 왼쪽 · 위 · 대각선 세 값 중 최솟값 + 1. 가장 작은 값이 정사각형 확장의 병목이 된다반환값 주의 — 문제가 요구하는 것은 한 변의 길이가 아니라 넓이(max × max) 목차1 문제 소개Programmers #12905가장 큰 정사각형 찾기board 크기 ≤ 1,000 × 1,000난이도: Level 20과 1로 이루어진 2차원 배열이 주어질 때, 1로만 채워진 가장 큰 정사각형을 찾아 그 넓이를 반환하는 문제다.풀이 과정모든 정사각형을 완전 탐색으로 검사하면 1,000 × 1,000 보드에서 시간 초과가 나므로 DP로 접근한다.dp[i][j]를 "(i, j)를 오..
script.js 에 별도 등록하세요. (티스토리가 서식 내 태그를 자동 삭제합니다) ================================================ -->📌 핵심 요약DFS(깊이 우선 탐색)는 한 방향으로 갈 수 있는 만큼 끝까지 파고든 뒤, 막히면 되돌아와 다른 길을 탐색하는 알고리즘입니다.“되돌아오기”를 구현하기 위해 스택(Stack) 또는 재귀 호출을 사용하며, 실전에서는 재귀 방식이 훨씬 간결합니다.최단 거리는 보장하지 않지만, 연결 요소 찾기 · 모든 경로 탐색 · 백트래킹의 기반이 되는 필수 알고리즘입니다.백준 11724(연결 요소의 개수), 2667(단지번호붙이기) 두 문제로 그래프 DFS와 2차원 격자 DFS를 직접 풀어봅니다. 목차1 DFS(깊..
script.js 에 별도 등록하세요. (티스토리가 서식 내 태그를 자동 삭제합니다) ================================================ -->📌 핵심 요약BFS(너비 우선 탐색)는 시작점에서 가까운 곳부터 차례대로 퍼져나가며 탐색하는 알고리즘입니다.탐색 순서를 관리하기 위해 큐(Queue) 자료구조를 사용하며, 먼저 발견한 노드를 먼저 방문합니다.모든 간선의 비용이 같을 때(가중치가 없을 때) 최단 거리를 보장하는 것이 BFS의 가장 큰 강점입니다.백준 2606(바이러스), 2178(미로 탐색) 두 문제로 연결 요소 탐색과 최단 거리 계산을 직접 풀어봅니다. 목차1 BFS(너비 우선 탐색)란?BFS(Breadth-First Search, 너비 우선..
📌 핵심 요약사전 준비 — JDK, Apache Tomcat, IntelliJ IDEA Ultimate 설치 필요Maven 자동 처리 — pom.xml만 올바르면 의존성은 IntelliJ가 자동으로 다운로드핵심 설정 순서 — SDK 지정 → 웹 팩셋 → 아티팩트 → 톰캣 연결 순으로 진행 목차1 사전 준비물 설치메이븐 프로젝트를 깃허브에서 가져온 후 로컬 실행이 되도록 프로젝트를 연동하려고 합니다.프로젝트를 IntelliJ에서 실행하기위해서 아래 세 가지가 먼저 설치되어 있어야 합니다.Maven은 IntelliJ에 내장되어 있으므로 별도 설치가 필요 없습니다.준비물권장 버전역할JDK프로젝트에 맞는 버전Java 컴파일 및 실행 환경. 환경변수 JAVA_HOME 설정 필요Apache Tomcat프로젝트에 ..
📌 핵심 요약Collections.sort() — List 구현체(ArrayList, LinkedList 등)에만 사용 가능하며, Comparator를 넘기면 사용자 정의 정렬 적용Comparable — 클래스 내부에 compareTo()를 오버라이드해 기본 정렬 기준 하나를 정의Comparator — 클래스 외부에서 compare() 또는 람다/체이닝으로 여러 정렬 기준을 유연하게 적용 목차1 오름/내림차순 정렬Collections.sort() 정렬은 List 인터페이스를 구현한 컬렉션에만 사용 가능하다. → ArrayList, LinkedList 등Collections.sort(List list)Collections.sort(List list, Comparator comparator) Java — ..
📌 핵심 요약String은 불변(Immutable) — 문자열 연산 시마다 새 객체 생성 → 반복 연산에 불리StringBuilder / StringBuffer는 가변(Mutable) — 동일 객체 내에서 수정 → 메모리·속도 효율적StringBuilder vs StringBuffer — 사용법은 동일, 유일한 차이는 Thread-safe 여부 (멀티쓰레드 → StringBuffer, 단일쓰레드 → StringBuilder) 목차1 StringBuilder와 StringBuffer란?자바에서 문자열을 다루는 자료형 클래스는 String, StringBuffer, StringBuilder 라는 3가지 자료형이 존재한다.String은 한 번 생성되면 값을 바꿀 수 없는 불변(Immutable) 클래스이지만..
