전체 글 47

[Programmers/Lv. 2/Python] 완전범죄

📎 문제 정보난이도Lv. 2유형DP (0/1 배낭)언어Python플랫폼 / 제목Programmers / 완전범죄🔍 문제 분석A도둑과 B도둑이 물건을 나눠 훔치는데, 물건 i를 A가 훔치면 A흔적에 info[i][0], B가 훔치면 B흔적에 info[i][1]이 쌓인다.A흔적 합이 n 이상이거나 B흔적 합이 m 이상이면 잡힌다.💡 풀이 아이디어dp[x]: 지금까지 처리한 물건 중 A흔적 합이 정확히 x일 때, 나머지(B흔적 합)의 최솟값.물건마다 두 가지 전이만 존재한다B가 훔치는 경우: A흔적(x)은 그대로, B흔적에 b를 더함A가 훔치는 경우: A흔적이 a만큼 늘어난 자리로 이동, B흔적은 그대로 유지매 물건 처리 시 next_dp를 INF로 새로 초기화해야한다.💻 코드"""dp[x] : A 흔..

🧩 알고리즘 2026.07.06

[Programmers/Lv. 2/Python] 바이러스 파이프

📎 문제 정보난이도Lv. 2 / 2025 카카오 하반기 1차유형완전탐색, DFS/그래프 탐색, 트리언어Python플랫폼 / 제목Programmers / 바이러스 파이프🔍 문제 분석n개의 배양체가 n-1개의 파이프로 트리 형태로 연결되어 있고, 하나의 배양체가 처음부터 감염되어 있다.파이프는 종류 단위로만 열고 닫을 수 있고, 열려 있는 동안 감염이 인접 노드로 전파된다. 💡 풀이 아이디어파이프 타입별로 인접 리스트 arr[node][type]를 만들어, 특정 타입을 열었을 때 해당 타입 간선만 따라 감염이 퍼지도록 구성한다.k번의 행동을 (A, B, C)의 길이 k 중복순열로 모두 나열하고 product([1,2,3], repeat=k), 각 순열대로 순서대로 파이프를 열어 감염 상태를 갱신한 뒤 ..

🧩 알고리즘 2026.07.03

[Programmers/Lv. 2/Python] 지게차와 크레인

📎 문제 정보난이도Lv. 2/ 2025 프로그래머스 코드챌린지 1차 예선유형BFS, 시뮬레이션, 구현언어Python플랫폼 / 제목Programmers / 지게차와 크레인🔍 문제 분석n×m 창고에 알파벳으로 구분되는 컨테이너가 놓여 있고, 요청이 들어올 때마다 특정 종류를 꺼낸다.요청 문자열 길이가 1이면 지게차 출고, 길이가 2면 크레인 출고💡 풀이 아이디어memo로 제거된 칸을 표시하고, 크레인 요청은 storage[y][x] == delete_w인 칸을 위치 상관없이 바로 제거한다.지게차 요청 직전마다 get_border()로 BFS를 새로 돌려서 외부와 연결된 칸을 구한다.is_border(board, y, x)로 해당 칸이 격자 테두리 자체이거나, 이웃 중 하나라도 외부와 이어진 칸이라면 접..

🧩 알고리즘 2026.07.02

12. DI와 DIP

※ 이 글은 인프런 강의를 수강하며개인 학습 목적으로 이해한 내용을 정리한 글입니다. 1️⃣ Dependency Injection(DI)란?메인 모듈이 직접 의존 객체를 생성하지 않고, 외부(injector)에서 주입받는 설계 패턴 외부에서 주입받는 구조로 만들면모듈 간 결합도를 낮추고 구현체를 유연하게 교체할 수 있습니다. 코드로 바로 살펴봅시다! 우선, DI가 없는 버전입니다.class BackendDeveloper: def coding(self): print("백엔드 개발자 : use Java")class FrontendDeveloper: def coding(self): print("프론트엔드 개발자: use JavaScript")class Project: ..

💻 CS 2026.06.26

[토이 PJT #1] VLM이란? - 이미지를 이해하는 AI 만들기

발표를 들을 때,말로만 설명하는 것보다말과 시각자료가 함께할 때 더 오래 기억에 남지 않으신가요? 우리가 AI에게 질문할 때도이미지와 함께 물어본다면 어떨까요? 지난 글에서 소개한 영화 챗봇 프로젝트, 기억하시나요?(보고 오시는 걸 추천드립니다😊) [토이 PJT #1] RAG란? - 검색해서 답하는 AI 만들기"몸이 아프다" 하면 병원을 가죠.기침이랑 열이 난다 → 내과귀가 좀 아프다 → 이비인후과충치 때문에 아프다 → 치과넘어져서 골절됐다 → 정형외과증상에 따라 우리는 다른 원을 찾아갑니다.elffffy.tistory.com 이 챗봇은 질문의 유형에 따라 네 가지 방식으로 처리합니다.그 중 이미지가 첨부된 질문은 VLM 경로로 전달되는데요! 오늘은 VLM이 무엇인지,그리고 어떤 흐름으로 동작하는지 함..

🤖 AI 2026.06.26

[Programmers/Lv. 2/Python] 비밀 코드 해독

📎 문제 정보난이도Lv. 2 / 2025 프로그래머스 코드챌린지 1차 예선유형완전탐색, 조합언어Python플랫폼 / 제목Programmers / 비밀 코드 해독🔍 문제 분석1~n 사이 숫자 중 5개를 고른 비밀코드가 있고, q번의 힌트가 주어진다.모든 힌트 조건을 동시에 만족하는 5개 조합의 경우의 수를 구한다.💡 풀이 아이디어combinations(1..n, 5)로 후보 조합을 전부 생성한다.각 후보에 대해 모든 쿼리를 순회하고 모든 쿼리를 통과한 후보만 카운트 한다.내부 교집합 계산은 set 연산 case_set & query_set을 쓰면 정렬 순서에 무관하게 정확하다.💻 코드from itertools import combinationsdef solution(n, q, ans): num..

🧩 알고리즘 2026.06.26

[토이 PJT #1] RAG란? - 검색해서 답하는 AI 만들기

"몸이 아프다" 하면 병원을 가죠.기침이랑 열이 난다 → 내과귀가 좀 아프다 → 이비인후과충치 때문에 아프다 → 치과넘어져서 골절됐다 → 정형외과증상에 따라 우리는 다른 원을 찾아갑니다. 이번에 만들어본 토이 프로젝트도 똑같은 구조입니다!영화를 주제로 질문이 들어오면, AI가 자동으로 질문 유형을 판단해서 네 가지 처리 방식 중 하나로 보내주는 구조예요.그 네 가지 중 오늘 집중적으로 다룰 건 RAG입니다!지금부터 알아보겠습니다!1️⃣ RAG가 뭔가요?Retrieval-Augmented Generation의 줄임말로, 관련 문서를 먼저 검색해온 뒤, 그 내용을 바탕으로 AI가 답변을 생성하는 방식 🤷‍♂️ 그럼, ChatGPT나 Cluade랑 똑같은 거 아닌가? 하는 생각이 들 수도 있지만,,, 아닙니..

🤖 AI 2026.06.25

[Programmers/Lv. 2/Python] 서버 증설 횟수

📎 문제 정보난이도Lv. 2 / 2025 프로그래머스 코드챌린지 2차 예선유형그리디, 시뮬레이션언어Python플랫폼 / 제목Programmers / 서버 증설 횟수🔍 문제 분석0~23시 24개 시간대에 시간당 접속자 수 players[t]가 주어진다.서버 1대는 m명을 처리하며 증설 후 k시간 뒤 자동 반납된다.💡 풀이 아이디어server_time_limit[t + k] = new_server_cnt로 만료 시각을 키, 반납 대수를 값으로 딕셔너리에 기록해두고, 매 시간대 시작 시 해당 키가 있으면 server_cnt에서 뺀다.현재 시각 t에서 필요한 총 서버 수는 players[t] // m이고, 이미 server_cnt대가 돌고 있으므로 new_server_cnt = players[t] // m..

🧩 알고리즘 2026.06.25

[Programmers/Lv. 1/Python] 노란불 신호등

📎 문제 정보난이도Lv. 1 / 2025 카카오 하반기 1차유형수학, 브루트포스, LCM언어Python플랫폼 / 제목Programmers / 노란불 신호등 🔍 문제 분석n개의 신호등이 각각 초록 → 노란 → 빨간 순서로 반복되며, 모든 신호등이 동시에 노란불이 되는 가장 빠른 시각을 구한다.신호등마다 주기가 다르고, 동시에 노란불인 경우가 없으면 -1을 반환한다.💡 풀이 아이디어각 신호등의 주기를 구하고, 전체 주기의 LCM을 탐색 limit으로 설정한다.매 시각 time마다 yellow_start = time % period를 계산해, G 범위이면 노란불로 판별한다.💻 코드def minimal_common(a, b): for i in range(max(a, b), (a * b) + 1):..

🧩 알고리즘 2026.06.24

[Programmers/Lv. 3/Python] 파괴되지 않은 건물

📎 문제 정보난이도Lv. 3유형2차원 누적합, 구간 업데이트언어Python플랫폼 / 제목Programmers / 파괴되지 않은 건물🔍 문제 분석board에 건물 내구도가 주어지고, 여러 스킬이 각각 사각형 범위에 일정 수치만큼 내구도를 증감시킨다.모든 스킬을 적용한 뒤, 내구도가 0보다 큰 건물의 개수를 구해야 한다.💡 풀이 아이디어 (n+1) × (m+1) 크기의 memo 배열을 두고, 스킬마다 사각형의 네 모서리에만 부호를 맞춰 표시한다.이후 memo를 가로 방향 누적합 → 세로 방향 누적합 순으로 두 번 훑으면, 각 칸에 실제로 적용된 변화량이 복원된다.마지막으로 board[y][x] + memo[y][x] > 0인 칸의 개수를 센다.💻 코드def solution(board, skill): ..

🧩 알고리즘 2026.06.21