본문 바로가기

개발자취업20

99클럽 코테 스터디 11일차 TIL - 과자 나눠주기 무엇을 새롭게 알았는지 이분 탐색은 단순 정렬된 값만이 아니라, 정답의 후보 범위가 있을 때에도 최댓값/최솟값을 찾는 데 매우 유용하다는 걸 느꼈어. 그리고 count += c / len;처럼 나눠줄 수 있는 조각 수를 누적하는 방식이 깔끔했어. 내일 학습할 것은 무엇인지 내일은 이분 탐색과 비슷한 로직을 활용하는 Parametric Search 개념을 더 익히고, 예를 들어 랜선 자르기 같은 문제도 풀어보려 해.오늘의 학습 키워드이분 탐색최적화조건 탐색자르기 문제공부한 내용 정리 문제는 과자를 잘라서 조카 M명에게 하나씩 나눠주되, 각 조카가 받는 과자의 길이가 최대가 되도록 하는 조건이었다. 단순히 길이마다 나눠지는지 전부 계산하면 비효율적이니까, 가능한 길이의 범위(1 ~ 가장 긴 과자 길이)를 두.. 2025. 4. 14.
99클럽 코테 스터디 10일차 TIL - 병든 나이트 (백준 1783번) 오늘의 학습 키워드구현조건 분기최대값 탐색체스판 이동공부한 내용 정리병든 나이트는 보통 나이트보다 움직임이 제한된 형태로, 4가지 방향으로만 이동할 수 있다.목표는 체스판 위에서 가능한 많은 칸을 방문하는 것이고, 이동 횟수가 4번 이상이면 네 가지 이동을 모두 써야 한다는 제약이 추가된다.따라서, 체스판 크기(N, M)에 따라 조건을 분기해서 접근해야 했고, 각각의 경우를 다음과 같이 나눠서 풀었다.N == 1: 위아래 이동 자체가 불가능 → 방문 칸 수는 무조건 1N == 2: 2, 3번 움직임만 가능 → (M + 1) / 2 만큼 오른쪽 이동 가능, 최대 4칸N >= 3 && M N >= 3 && M >= 7: 모든 움직임 사용 가능 → M - 2칸까지 이동 가능소스코드/*병든 나이트입력 : N M.. 2025. 4. 11.
제목: 99클럽 코테 스터디 9일차 TIL - 저울(백준 2437번) 오늘의 학습 키워드그리디정렬누적합최소값 탐색공부한 내용 정리이 문제는 무게추를 이용해 만들 수 없는 가장 작은 무게를 찾는 문제다.핵심 아이디어는 오름차순으로 정렬한 후, 1부터 차례로 누적하며 비교하는 것이다..처음 target을 1로 시작해서, 지금까지 만들 수 있는 무게 범위는 [1, target)이다.만약 다음 무게추가 target보다 작거나 같으면 target을 확장할 수 있고,반대로 크다면 그 순간 target은 만들 수 없는 가장 작은 무게가 된다.예를 들어 [1, 1, 2, 3, 6, 7, 30] 같은 배열을 보면,target이 누적되다가 30 앞에서 멈춰버리게 되고, 그 시점의 target이 정답이 되는 구조다.소스코드/*저울입력 : N 무게추 갯수 N int 변환 weight.. 2025. 4. 10.
99클럽 코테 스터디 8일차 TIL - 한국이 그리울 땐 서버에 접속하지 (백준 9996번) 오늘의 학습 키워드문자열 처리패턴 매칭startWithendsWith공부한 내용 정리이 문제는 주어진 패턴이 파일명과 일치하는지 확인하는 문제였다.패턴에는 *가 하나 들어가고, 그 위치는 중간에만 있어서 쉽게 앞/뒤로 나눌 수 있다.예를 들어 "a*d"라면 "a"로 시작하고 "d"로 끝나는 파일명은 모두 일치한다.핵심은 이 두 조건을 동시에 만족해야 한다는 것과, 앞+뒤 패턴의 총 길이보다 파일명이 짧으면 아예 불가능하다는 점이었다.그래서 String.startsWith(), String.endsWith()를 활용해서 풀었다.소스코드/*입력 : N, pattern로직 : 패턴을 *기준으로 분리 분리한 앞 뒤를 파일 이름이랑 비교출력 : 맞으면 DA 틀리면 NE*/import java.util.*.. 2025. 4. 9.
99클럽 코테 스터디 7일차 TIL - 쇠막대기 (백준 10799번) 오늘의 학습 키워드- 스택- 괄호 문자열- 구현- 쇠막대공부한 내용 정리오늘은 백준 4963번 쇠막대기 문제를 풀었다.쇠막대기 문제는 괄호 문자열을 해석해 몇 개의 쇠막대기가 잘리는지를 계산하는 문제였다.()는 레이저를 의미하고, (로 시작해서 )로 끝나는 경우는 쇠막대기의 끝을 나타낸다.스택을 활용해서 여는 괄호는 무조건 push하고, 닫는 괄호를 만나면 pop하면서 이전 문자가 (였는지 )였는지를 보고 레이저인지 쇠막대기의 끝인지 판단했다.레이저일 경우 현재 스택에 쌓인 개수만큼 잘리니까 stack.size()를 더하고, 쇠막대기의 끝이면 +1을 해줬다. 소스코드/* * 쇠 막대기 * 입력 : 쇠막대기와 레이저의 배치를 나타내는 괄호 표현 (공백 X) * 출력 : 잘려진 쇠막대기의 총 개수 */imp.. 2025. 4. 8.
99클럽 코테 스터디 6일차 TIL - 섬의 개수 (백준 4963번) 오늘의 학습 키워드- DFS- 2차원 배열 탐색- 8방향 탐색- 섬의 개수공부한 내용 정리오늘은 백준 4963번 “섬의 개수” 문제를 풀었다.이 문제는 지도의 정보가 2차원 배열 형태로 주어지고, 섬(1로 표시된 영역)의 개수를 세는 문제다.단순히 상하좌우만 보는 것이 아니라, 대각선까지 포함한 8방향을 모두 확인해야 한다. 접근 방식: 1. 입력을 받아 지도를 구성. 2. 지도 전체를 순회하며 아직 방문하지 않은 섬(1)을 만나면 DFS로 연결된 모든 땅을 방문 처리. 3. 이 과정을 반복하면서 섬의 개수를 새기. 소스코드import java.util.Scanner;public class Main { static int w, h; static int[][] map; static bool.. 2025. 4. 7.
99클럽 코테 스터디 5일차 TIL - 수열 (백준 2559번) 오늘의 학습 키워드- 슬라이딩 윈도우- 연속 부분합- 시간복잡도 개선공부한 내용 정리오늘은 주어진 온도 수열에서 연속된 K일 동안의 합이 가장 큰 값을 구하는 문제를 풀었다.처음에는 이중 for문을 사용하여 모든 구간의 합을 계산했고, 이는 시간복잡도가 O(N*K)로 비효율적이었다.하지만 이후 슬라이딩 윈도우 기법을 통해 O(N)으로 줄일 수 있다는 걸 알게 되었고, 이를 직접 코드에 적용해 보았다.소스코드import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int N = sc.nextInt(); .. 2025. 4. 4.
99클럽 코테 스터디 4일차 TIL - 안전영역 (백준 2468번) 오늘의 학습 키워드- DFS- BFS- Flood Fil- 완전 탐색- 안전 영역공부한 내용 정리오늘은 2차원 지도에서 비가 내릴 때, 특정 높이 이하의 지역이 물에 잠기는 상황을 가정하고, 잠기지 않은 안전한 지역의 개수를 세는 문제를 풀었다.높이 1부터 최대 높이까지 반복하면서, DFS로 침수되지 않은 영역을 탐색했다.각 높이에 대해 안전한 영역의 개수를 세어 그 중 최대값을 구하는 방식이다. 문제 해결 전략은 다음과 같다:1. 비의 높이를 0부터 최대 높이까지 올려가며 반복2. 각 높이마다 물에 잠기지 않은 영역을 DFS로 탐색3. 탐색된 영역 수를 카운트하고, 그 중 최대값 저장소스코드import java.util.*;public class Main { static int N; // 지역의 .. 2025. 4. 3.
99클럽 코테 스터디 3일차 TIL - 바탕화면 정리 (프로그래머스) 오늘의 학습 키워드문자열 배열2차원 배열 순회최소/최대값 갱신드래그 범위 계산좌표 계산구현  공부한 내용 정리오늘은 프로그래머스의 “바탕화면 정리” 문제를 풀었다.이 문제는 바탕화면의 파일(#)들을 모두 드래그해서 선택하려고 할 때, 가장 효율적인 드래그 범위를 계산하는 구현 문제다.핵심은 파일이 위치한 모든 좌표들을 순회하면서,가장 위쪽(lux),가장 왼쪽(luy),가장 아래쪽(rdx),가장 오른쪽(rdy)을 각각 구한 뒤, 사각형 범위로 감싸는 것이다.드래그는 좌상단 포함, 우하단은 다음 칸까지 포함해야 하기 때문에 rdx + 1, rdy + 1 처리가 필요하다.이를 통해 [lux, luy, rdx+1, rdy+1]을 반환하면 정답이다.소스코드class Solution { public int[].. 2025. 4. 2.