분류 전체보기
-
LeetCode 2540. Minimum Common Value개발/알고리즘 2025. 4. 9. 16:45
📘 LeetCode 2540. Minimum Common Value📝 문제 설명두 개의 정렬된 정수 배열 nums1과 nums2가 주어진다.두 배열 모두에 공통으로 존재하는 가장 작은 정수를 반환하라.공통된 값이 없으면 -1을 반환한다.🔹 제약 사항두 배열 모두 오름차순 정렬되어 있음각 배열의 길이는 1 이상 10⁵ 이하🔸 예시✅ 예시 1Input:nums1 = \[1, 2, 3\], nums2 = \[2, 4\]Output:2✅ 예시 2Input:nums1 = \[1, 2, 3, 6\], nums2 = \[4, 5, 6\]Output:6💡 해설두 배열이 모두 오름차순 정렬되어 있다는 점을 활용하면,투 포인터 방식으로 매우 효율적으로 풀 수 있다.🚀 해결 전략포인터 i, j를 각각 nums1,..
-
LeetCode 917. Reverse Only Letters개발/알고리즘 2025. 4. 9. 16:33
📘 LeetCode 917. Reverse Only Letters📝 문제 설명주어진 문자열 s에서 영문자(letter)만 뒤집고,숫자, 기호 등의 비영문자는 원래 위치를 그대로 유지한 문자열을 반환하라.🔹 예시Input:s = "a-bC-dEf-ghIj"Output:"j-Ih-gfE-dCba"🔸 추가 예시Input:s = "Test1ng-Leet=code-Q!"Output:"Qedo1ct-eeLg=ntse-T!"💡 해설이 문제는 투 포인터 알고리즘의 전형적인 응용이다.양쪽 끝에서 시작하는 포인터(left, right)를 활용하여,양쪽에서 영문자만 만나면 교체하고,영문자가 아닌 문자는 그대로 두고 포인터만 이동한다.이 방식은 문자열을 한 번만 스캔하므로 시간 복잡도는 O(n) 이다.🚀 해결 전략..
-
코드잇 백엔드 스프린트 - 9주차 위클리-페이퍼: Rest Full API개발/활동 2025. 4. 7. 11:13
✅ 1. SOAP에서 REST로의 전환: 이유와 장단점🔁 전환 이유SOAP의 복잡성: WSDL, XML 스키마, 헤더 등 너무 무겁고 복잡함.HTTP 친화성 부족: 다양한 프로토콜을 지원하나, HTTP에 최적화되어 있지 않음.개발 생산성 저하: 구현과 유지보수가 어렵고, 디버깅도 복잡함.REST의 간결함: HTTP 메서드와 URI로 명확하고 직관적인 설계가 가능함.✅ REST의 장단점✅ 장점항목 설명경량 구조JSON 등 경량 포맷 사용 가능직관적 URI 설계리소스를 URI로 표현HTTP 캐싱 지원HTTP 자체 기능 활용 가능플랫폼 독립성다양한 클라이언트에서 호출 가능확장성유연하고 확장에 용이함❌ 단점항목 설명표준화 부족보안, 트랜잭션 등은 직접 구현해야 함고급 기능 부재SOAP의 WS-* 기능들을 기본..
-
위상정렬 (Topological Sort) 완벽 정리개발/알고리즘 2025. 4. 2. 22:31
위상정렬 (Topological Sort) 완벽 정리✅ 위상정렬이란?방향 그래프(DAG)에서 선행 조건을 지키며 노드들을 정렬하는 알고리즘.대표적인 예:선수과목 → 후속 과목작업 A → 작업 B (A를 먼저 해야 B가 가능)🔑 조건DAG (Directed Acyclic Graph) 이어야 함사이클이 존재하면 위상정렬 불가능📘 용어 정리용어의미진입 차수해당 노드로 들어오는 간선의 개수진출 차수해당 노드에서 나가는 간선의 개수진입 차수 0선행 조건이 없는 노드, 바로 처리 가능🔁 위상정렬 알고리즘 흐름 (진입 차수 기반)모든 노드의 진입 차수 계산진입 차수가 0인 노드를 큐에 삽입큐에서 꺼내며 결과 리스트에 추가꺼낸 노드가 향하는 노드들의 진입 차수 -1새로 진입 차수 0이 된 노드를 큐에 삽입큐가 빌..
-
코드잇 백엔드 스프린트 - 8주차 위클리-페이퍼: Spring 기초개발/활동 2025. 3. 31. 09:14
1. Spring에서 AOP(Aspect Oriented Programming)가 필요한 이유와 실제 애플리케이션 개발 사례AOP란?AOP(Aspect Oriented Programming, 관점 지향 프로그래밍)는 공통 관심사(Cross-cutting Concern) 를 분리하여 모듈화할 수 있는 프로그래밍 패러다임입니다. 이는 OOP(Object Oriented Programming)가 해결하기 어려운 흩어진 코드(scattered code) 와 얽힌 관심사(tangled concerns) 문제를 해결하는 데 중점을 둡니다.왜 필요한가?중복 코드 제거: 로깅, 트랜잭션 처리, 보안, 성능 측정 등 공통 기능을 여러 클래스에 반복 작성할 필요가 없음관심사의 분리: 핵심 비즈니스 로직과 공통 기능을 분리..
-
백준 2565번 - 전깃줄 (LIS / DP / 이분 탐색) 파이썬개발/알고리즘 2025. 3. 28. 16:20
📌 백준 2565번 - 전깃줄 (LIS / DP / 이분 탐색)✨ 문제 요약두 전봇대(A, B)가 있고, 각각의 전깃줄이 A의 위치와 B의 위치를 쌍으로 갖는다.전깃줄이 서로 교차하지 않도록 하기 위해 최소 몇 개를 제거해야 하는지 구하는 문제다.🧠 문제 해석전깃줄이 교차하지 않으려면 A에서의 순서가 증가할 때, B에서도 증가해야 한다.즉, A를 기준으로 정렬하면남은 B 값들이 가장 긴 증가하는 부분 수열(LIS)이 되도록 전깃줄을 선택하면 됨.✅ 정답 로직전깃줄 목록을 A 기준으로 오름차순 정렬한다.정렬된 리스트에서 B 값들만 추출한다.B 값들에서 LIS를 구한 뒤,전체 전깃줄 수 - LIS 길이 = 제거할 전깃줄 수🧱 DP 풀이 (O(N²))N = int(input())arr = [tuple(m..
-
백준 9655번 - 돌 게임 파이썬개발/알고리즘 2025. 3. 28. 15:18
📌 백준 9655번 - 돌 게임 (게임 이론 / DP)✨ 문제 요약1 또는 3개의 돌을 가져갈 수 있는 게임이 있다.총 N개의 돌이 있으며, SK와 CY가 번갈아가며 돌을 가져간다.마지막 돌을 가져가는 사람이 이긴다.SK가 항상 먼저 시작이기는 사람의 이름을 출력 ("SK" 또는 "CY")🧠 문제 해석이 문제는 기초적인 게임 이론 또는 DP로 푸는 대표 문제다.핵심은 "현재 돌 개수에 따라 이기는 사람이 정해진다"는 점이다.✅ 수학적 풀이 (패턴 관찰)N (돌 개수)승자1SK2CY3SK4CY5SK→ 홀수면 SK가 이기고, 짝수면 CY가 이긴다!✨ 정답 코드 (수학 풀이)N = int(input())print("SK" if N % 2 == 1 else "CY")✅ DP 풀이🔧 상태 정의dp[i] = ..