[백준] 1135. 뉴스 전하기 (트리/Java)
·
코딩 테스트/Baekjoon
[백준] 1135. 뉴스 전하기 🤔 문제 핵심 이해왜 최소 시간을 구해야 할까?단순히 모든 직원에게 전화를 돌리면 간선의 수만큼 시간이 걸릴 것 같지만,전화를 거는 순서에 따라 전체 소요 시간이 달라진다. 테스트케이스 2번 예시를 살펴보면민식이행님(0)├── 직원1└── 직원2 ├── 직원3 └── 직원41번에게 먼저 전화하는 경우0 → 1 : 1분2 → 3 : 3분2 → 4 : 4분0 → 2 : 2분2번에게 전화할 때 이미 1분이 지나있고, 2번의 하위 직원들에게 전파하는 시간이 1분씩 지연됨2번에게 먼저 전화하는 경우0 → 2 : 1분2 → 4 : 3분0 → 1 : 2분 | 2 → 3 : 2분2번이 하위 직원들에게 전파하는 동안 1번에게도 전화를 걸 수 있어서 더 효율적시간이 오래..
[백준] 1522. 문자열 교환 (투포인터/Java)
·
코딩 테스트/Baekjoon
[백준] 1522. 문자열 교환 📌 풀이 과정처음에 문제에서 말하는 "교환"이 도대체 뭔지 이해되지 않았다. 백준 질문게시판을 찾아보니 아래 글을 발견했고,교환의 정의는 a와 b의 위치를!! 두 문자의 위치를 바꾸는 것이었다.핵심 아이디어a의 개수만큼 연속된 구간을 만들어야 함그 구간 안에 있는 b들을 밖의 a들과 교환따라서 구간 내 b의 개수 = 필요한 교환 횟수모든 시작점에서 윈도우를 슬라이딩하며 최소 b 개수 찾기그리고 원형 문자열이라는 조건이 주어졌기 때문에(start + i) % size로 배열 끝에서 처음으로 순환하는 원형 처리를 해주어야 한다. ✨ 제출 코드메모리: 14232 KB시간: 104 msimport java.io.BufferedReader;import java.io.IOExcep..
[백준] 2631. 줄세우기 (DP/Java)
·
코딩 테스트/Baekjoon
[백준] 2631. 줄세우기 📌 풀이 과정이 문제의 핵심은 "최소한의 이동으로 아이들을 오름차순으로 정렬하는 것"이다.현재 줄에서 이미 올바른 순서로 서 있는 아이들은 움직일 필요가 없다.나머지 아이들만 적절한 위치로 옮기면 전체가 정렬된다.따라서 "움직이지 않아도 되는 최대 아이 수"를 구하는 것이 관건임!!!! 💡 핵심 아이디어여기서 가장 긴 증가 부분 수열(LIS) 개념을 활용하게 되면 굉장히 쉽게 풀리는데,LIS에 포함된 아이들은 이미 올바른 상대적 위치에 있다는 것을 기억하면 된다. 예를 들어현재 순서: [3, 7, 5, 2, 6, 1, 4]LIS: [3, 5, 6] (길이 3)[3, 5, 6]은 이미 증가하는 순서로 배치되어 있으니, 이 아이들은 그대로 두고 나머지 아이들(7, 2, 1, ..
[백준] 11066. 파일 합치기 (DP/Java)
·
코딩 테스트/Baekjoon
[백준] 11066. 파일 합치기📌 풀이 과정💡 문제 조건여러 파일을 하나로 합치려면 한 번에 두 개씩만 합칠 수 있다.두 파일(또는 그룹)을 합칠 때 비용 = 두 그룹의 크기 합목표: 모든 파일을 합치는 최소 비용 구하기ex) 파일 3개 [A, B, C]를 합치는 경우방법 1: (A + B) 먼저 → (AB + C)총 비용 = (A + B) + (A + B + C)방법 2: (B + C) 먼저 → (A + BC)총 비용 = (B + C) + (A + B + C) 1단계: DP 상태 정의`dp[i][j]` = i번째부터 j번째 파일까지 모두 합치는 최소 비용 2단계: 점화식 도출구간 [i, j]의 파일들을 합치려면분할점 k에서 두 그룹으로 나눔: [i, k] + [k+1, j]각각 따로 합친 후, 마..
[싸피셜이 알려드림: SSAFY편] 전공자가 SSAFY를 선택한 이유
·
SSAFY
"전공자인데 왜 SSAFY 지원했어요?" 이 질문은 면접에서 정말 자주 나오는 질문 중 하나입니다.SSAFY에서 취업 특강을 들을 때도 늘 이 질문을 미리 고민해보라고 하시더라고요 🤔그래서 오늘은 제가 SSAFY 12기 구미 캠퍼스를 지원하게 된 계기와, 지금까지 어떤 변화와 성장을 이뤘는지 풀어보려 합니다! 🧭 SSAFY를 지원한 계기저는 20학번, 코로나 학번이었습니다.1학년 땐 학교에 아예 가지도 못했어요. 대면 수업은커녕, 캠퍼스가 어떻게 생겼는지도 몰랐죠 😅2학년 2학기부터 겨우 대학생활다운 생활을 시작했습니다.그래도 학생회 활동하면서 선배들과 알고리즘 스터디도 하고, 토이 프로젝트도 나름 열심히 했어요.사물함 관리 시스템 만들려고 학생회에서 뜻이 맞는 사람들 몇 명 모았던 적도 있는데…..
[싸피셜이 알려드림: 기술편] 핫하다 핫해 AI 에이전트
·
SSAFY
🔌 AI 연결의 표준, MCP와 A2A를 알아보자AI 기술이 발전함에 따라, 다양한 도구와 서비스를 효과적으로 연결하는 것이 중요해졌습니다. 오늘은 이런 연결을 도와주는 두가지 핵심 기술, MCP와 A2A에 대해 소개해드리겠습니다!MCP (Model Context Protocol): AI 모델과 외부 도구를 연결하는 표준 프로토콜A2A (Agent-to-Agent Protocol): AI 에이전트 간의 상호작용을 위한 통신 규약 🧩 MCP: AI와 도구를 연결하는 USB-C2024년 11월, Anthropic에서 발표한 MCP는 AI 모델이 다양한 외부 도구와 데이터를 표준화된 방식으로 연결할 수 있도록 설계된 오픈소스 프로토콜입니다. 이를 통해 AI는 이메일, 캘린더, 데이터베이스 등 다양한 서비스..
[싸피셜이 알려드림: 기술편] @Builder의 역직렬화 동작 원리 파헤치기
·
SSAFY
안녕하세요, 여러분! 👋 싸피 12기 싸피셜 기자단 안수진입니다! 저는 백엔드 개발자를 희망하고 있다는거 기억하고 계시나요?백엔드 개발을 공부하다 보면 종종 "어? 이게 왜 되지? 🤔" 하는 순간을 마주치게 되죠. 최근 저도 그런 순간을 경험했는데요, Spring Boot 프로젝트에서 다음 코드가 어떻게 정상적으로 작동하는지에 대한 의문이었습니다. 장바구니 수량 요청을 보내는데 사용되는 DTO 클래스import io.swagger.v3.oas.annotations.media.Schema;import lombok.Builder;import lombok.Getter;@Getter@Builder@Schema(description = "장바구니 상품 수량 수정 요청 DTO")public class CartQ..
[백준] 14500. 테트로미노 (구현/Java)
·
코딩 테스트/Baekjoon
[백준] 14500. 테트로미노 📌 풀이 과정정사각형 4개를 이어 붙인 1X1 정사각형은 테트로미노라고 하며, 다음과 같은 5가지가 있다.각 지점마다 만들 수 있는 도형을 탐색하면 된다.사실 처음에는 테트로미노를 회전/대칭한 형태를 하드코딩 해야하나.. 싶었다.1. 다섯가지 중에서 ㅜ 모양을 제외한 나머지는 depth가 4인 dfs로 탐색노란색 칸 : 탐색의 시작 칸노란색 칸에서 시작해서 dfs로 탐색하는 것이다.탐색하는 지점은 visited 처리를 해주고, dfs 탐색 후 visited를 다시 원복시켜야 한다. 2. ㅜ 모양은 ㅓ, ㅏ, ㅗ로 가능하므로 인접한 4칸 중 3칸을 선택한다. (조합) ✨ 제출 코드메모리: 35384 KB시간: 588 msimport java.io.BufferedReader..
[백준] 11000. 강의실 배정 (그리디/Java)
·
코딩 테스트/Baekjoon
[백준] 11000. 강의실 배정[백준] 1931. 회의실 배정📌 풀이 과정직전에 회의실 배정 문제를 풀어서 그런지, 강의실 배정 문제도 끝나는 시간 기준으로 정렬하고 풀었더니 시간초과가 났다.// 내가 처음에 짠 코드 (시간초과)PriorityQueue pq = new PriorityQueue((l1, l2) -> { if(l1.end == l2.end) return l1.start - l2.start; return l1.end - l2.end; // 끝나는 시간 순 정렬});while(true){ count++; Lecture tmp = pq.poll(); List remainLecture = new ArrayList(); while(!pq.isEmpty()){ ..
[백준] 2961. 도영이가 만든 맛있는 음식 (부분집합/Java)
·
코딩 테스트/Baekjoon
[백준] 2961. 도영이가 만든 맛있는 음식💡 문제 분석N개의 재료 중 일부를 선택해서 요리를 만들 때, 신맛과 쓴맛의 차이를 최소화하는 문제다.신맛: 선택한 재료들의 신맛을 모두 곱한 값쓴맛: 선택한 재료들의 쓴맛을 모두 더한 값목표: |신맛 - 쓴맛|의 최솟값 구하기핵심은 부분집합(Subset) 문제라는 것이다. N개 재료 중 적어도 1개 이상을 선택하는 모든 경우를 탐색해야 한다. 📌 풀이 과정풀이 방법 1: 재귀 (백트래킹)import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.StringTokenizer;public class Main{ static ..