탐욕 알고리즘이란? Greedy Algorithm: 선택의 순간마다 당장 눈앞에 보이는 최적의 상황만을 쫒아 최종적인 해답에 도달하는 방법 동적 프로그래밍 사용 시 지나치게 많은 일을 한다는 것에서 착안하여 고안된 알고리즘이다. 각 단계에서 가장 최선의 선택을 하는 기법이다. 이렇게 각 단계에서 최선의 선택을 한 것이 전체적으로도 최선이길 바라는 알고리즘인 것이다. 탐욕 알고리즘은 일정 공식없이 창의력을 요구하는 문제 유형이다. 때문에 문제를 풀기위한 최소한의 아이디어를 떠올려야 할 것이다. 물론 모든 경우에서 그리디 알고리즘이 통하는 것은 아니다. 예를 들어 지금 선택하면 1개의 마시멜로를 받고, 1분 기다렸다 선택하면 2개의 마시멜로를 받는 문제에서는, 그리디 알고리즘을 사용하면 항상 마시멜로우를 1..
💡Spring Framework: 자바 엔터프라이즈 애플리케이션 개발에 사용되는 오픈소스 경량급 애플리케이션 프레임워크이다. 흔히 스프링이라고 부른다. 스프링이란? 애플리케이션의 기본 틀! 스프링 컨테이너 스프링은 스프링 컨테이너 또는 애플레이케이션 컨텍스트라고 불리는 스프링 런타임 엔진을 제공한다. 설정정보를 참고해서 애플리케이션을 구성하는 오브젝트를 생성하고 관리한다. 보통 웹 모듈에서 동작하는 서비스나 서블릿으로 등록해서 사용한다. 공통 프로그래밍 모델 - Ioc/DI, PSA, AOP 프레임워크는 애플리케이션을 구성하는 오브젝트가 생성되고 동작하는 방식에 대한 틀을 제공해줄 뿐만 아니라, 어떻게 작성돼야 하는지에 대한 기준도 제시해준다. 이런 틀을 보통 프로그래밍 모델이라고 한다. 스프링은 IoC..
SUBQUERY 란? SUBQUERY(서브쿼리): 쿼리문을 작성할 때, 그 안에 포함되는 다른 쿼리문. 실행되는 쿼리에 중첩으로 위치해, 정보를 전달한다. SELECT [컬럼] FROM [테이블] WHERE [컬럼] IN ( SELECT [컬럼] FROM [테이블] WHERE [조건] ); 서브쿼리를 포함하고 있는 쿼리를 외부쿼리(outer query)라고 부르며, 서브쿼리는(inner query)라고도 부른다. 서브쿼리는 위의 예시처럼 소괄호()로 묶어서 표현한다. 서브쿼리는 메인쿼리의 컬럼을 사용할 수 있지만, 메인 쿼리는 서브 쿼리의 컬럼을 사용할 수 없다. 서브쿼리의 결과는 개별 값이나 레코드 리스트이다. 그리고 서브쿼리의 결과를 하나의 컬럼으로 사용할 수 있다. 서브쿼리 사용이 가능 한 곳 My..
Group by 란? Group by: 데이터를 조회할 때 그룹으로 묶어서 조회해주는 쿼리 SELECT [컬럼] FROM [테이블] GROUP BY [그룹화할 컬럼]; 정의만 봐서는 Group by가 무엇인지 이해가 잘 되지 않을 것이다. 예시를 통해서 알아보자. 아래 사진 처럼 구성된 테이블에서 age컬럼의 데이터만 뽑아보자. 이번에는 위에 사용했던 쿼리문에 group by절을 붙여서 사용해보자. SELECT age FROM user GROUP BY age; 차이점이 보이는가? 중복 값이 제거되었다. age 값을 기준으로 그룹을 만들어 버렸기 때문에 중복된 데이터가 제거가 된 것이다. 그렇다면 중복을 제거해주는 distinct를 쓴 것과 똑같은 결과 값을 가지게 된다. 그럼 Group by 말고 간단하..
17298. 오큰수 https://www.acmicpc.net/problem/17298 17298번: 오큰수 첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에 수열 A의 원소 A1, A2, ..., AN (1 ≤ Ai ≤ 1,000,000)이 주어진다. www.acmicpc.net 📌문제 - 예제1 📝입력 4 3 5 2 7 💻출력 5 7 7 -1 📌풀이 992ms 147952kb import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Stack; import java.util.StringTokenizer; public clas..
10799. 쇠막대기 https://www.acmicpc.net/problem/10799 10799번: 쇠막대기 여러 개의 쇠막대기를 레이저로 절단하려고 한다. 효율적인 작업을 위해서 쇠막대기를 아래에서 위로 겹쳐 놓고, 레이저를 위에서 수직으로 발사하여 쇠막대기들을 자른다. 쇠막대기와 레이저 www.acmicpc.net 📌문제 - 예제1 📝입력 ()(((()())(())()))(()) 💻출력 17 📌풀이 180ms 16472kb import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Stack; public class Main { public static void..
27. k개 정렬 리스트 병합 https://leetcode.com/problems/merge-k-sorted-lists/ Merge k Sorted Lists - LeetCode Can you solve this real interview question? Merge k Sorted Lists - You are given an array of k linked-lists lists, each linked-list is sorted in ascending order. Merge all the linked-lists into one sorted linked-list and return it. Example 1: Input: lis leetcode.com 📌문제 k개의 정렬된 리스트를 1개의 정렬된 리스트로 ..
26. 원형 데크 디자인 https://leetcode.com/problems/design-circular-deque/ Design Circular Deque - LeetCode Can you solve this real interview question? Design Circular Deque - Design your implementation of the circular double-ended queue (deque). Implement the MyCircularDeque class: * MyCircularDeque(int k) Initializes the deque with a maximum size of k. * boole leetcode.com 📌문제 다음 연산을 제공하는 원형 데크를 디자인하라..
25. 원형 큐 디자인 https://leetcode.com/problems/design-circular-queue/ Design Circular Queue - LeetCode Can you solve this real interview question? Design Circular Queue - Design your implementation of the circular queue. The circular queue is a linear data structure in which the operations are performed based on FIFO (First In First Out) principle, and the leetcode.com 📌문제 원형 큐를 디자인하라 - 예제1 📝입력 ["My..
24. 스택을 이용한 큐 구현 https://leetcode.com/problems/implement-queue-using-stacks/ Implement Queue using Stacks - LeetCode Can you solve this real interview question? Implement Queue using Stacks - Implement a first in first out (FIFO) queue using only two stacks. The implemented queue should support all the functions of a normal queue (push, peek, pop, and empty). Implement t leetcode.com 📌문제 스택을 이용해..