목록STUDY (30)
천천히 빛나는
프로그래머스 SQL 고득점 Kit의 GROUP BY 문제입니다. https://school.programmers.co.kr/learn/challenges?tab=sql_practice_kit 1. 조건에 맞는 사용자와 총 거래금액 조회하기 SELECT USER_ID, NICKNAME, SUM(PRICE) AS TOTAL_SALES FROM USED_GOODS_BOARD, USED_GOODS_USER WHERE USER_ID = WRITER_ID AND STATUS = 'DONE' GROUP BY USER_ID HAVING SUM(PRICE) >= 700000 ORDER BY TOTAL_SALES; FROM → WHERE절 → GROUP BY → HAVING → SELECT → ORDER BY 순서인 것을..
프로그래머스 SQL 고득점 Kit의 SUM, MAX, MIN 문제입니다. https://school.programmers.co.kr/learn/challenges?tab=sql_practice_kit 1. 가장 비싼 상품 구하기 SELECT MAX(PRICE) AS MAX_PRICE FROM PRODUCT; MAX : 최대값을 반환 2. 가격이 가장 비싼 식품의 정보 출력하기 SELECT PRODUCT_ID,PRODUCT_NAME,PRODUCT_CD,CATEGORY,PRICE FROM FOOD_PRODUCT WHERE PRICE IN (SELECT MAX(PRICE) FROM FOOD_PRODUCT); 내림차순 정렬을 하고 LIMIT로 가장 첫번째 행을 출력해줘도 된다. 3. 최댓값 구하기 SELECT ..
프로그래머스 SQL 고득점 Kit의 SELECT 문제입니다. https://school.programmers.co.kr/learn/challenges?tab=sql_practice_kit 1. 12세 이하인 여자 환자 목록 출력하기 SELECT PT_NAME, PT_NO, GEND_CD, AGE, IFNULL(TLNO, 'NONE') AS TLNO FROM PATIENT WHERE AGE =2 ORDER BY USER_ID, PRODUCT_ID DESC; Group by : 특정 속성의 값이 같은 투플들을 모아 그룹을 생성 Having : Group BY 절에 대한 조건을 제시 3. 인기있는 아이스크림 SELECT FLAVOR FROM FIRST_HALF ORDER BY TOTAL_ORDER DESC, ..
SELECT FNAME, LNAME FROM EMPLOYEE WHERE SUPER_SSN IS NULL; IS NULL 또는 IS NOT NULL을 이용하여 속성 값이 NULL인지 검사할 수 있다 중첩질의(Nested query) SELECT DISTINCT ESSN FROM WORKS_ON WHERE (PNO, HOURS) IN (SELECT PNO, HOURS FROM WORKS_ON WHERE ESSN=‘333445555’); SSN이 3344555인 사원이 일하는 프로젝트와 일한 시간의 조합이 동일한 사원의 SSN을 검색하는 쿼리이다. 중첩질의에서는 속성의 이름이 모호해질 수 있으므로 AS 를 사용하여 별명을 작성하는 것이 좋다. 여기서 내부 질의는 IN 이후 SELECT 문이 되고, 내부질의 -..
SELECT 문 SELECT 필드이름 FROM 테이블이름 WHERE 조건 Select를 사용하여 조건에 따른 데이터를 검색할 수 있다 SELECT * FROM 테이블명; *을 이용해서 모든 데이터를 출력할 수 있다 SELECT * FROM 테이블명 WHERE 속성1 BETWEEN 값1 AND 값2; SELECT * FROM Company WHERE age BETWEEN 23 AND 35; BETWEEN은 속성 1의 값이 값 1과 값 2 사이에 있는 것을 모두 출력해준다 SELECT * FROM 테이블명 WHERE 속성 1 IN 조건; SELECT * FROM Company WHERE Age IN (23, 24, 25); SELECT * FROM Company WHERE Age = 23 OR Age = 2..
1. 개미 전사 개미 전사를 위해 식량창고 N개에 대한 정보가 주어졌을 때 얻을 수 있는 식량의 최댓값을 구하는 프로그램을 작성하는 문제이다. N=4일 때 식량을 선택할 수 있는 경우의 수는 8가지이다. 최적의 해는 7번째(3+5=8)가 된다. a_i를 i번째 식량창고까지의 최적의 해라고 정의하도록 하겠다. i번째 식량창고에 대해서 털지 안 털지의 여부를 결정하기 위해서는 2가지 경우 중에서 더 많은 식량을 털 수 있는 경우를 선택하면 된다. int n; int food[101]; int dp[101]; int main() { cin >> n; for (int i = 1; i > food[i]; } dp[1] = food[1]; dp[2] = max(food[1], food[2]); for (int i ..
참고 영상: https://www.youtube.com/watch?v=5Lu34WIx2Us 다이나믹 프로그래밍 (Dynamic Programming, 동적 계획법) 메모리를 적절히 사용하여 수행 시간 효율성을 향상시키는 방법 이미 계산된 결과는 별도의 메모리 영역에 저장하여 다시 계산하지 않도록 한다. 나중에 해당 결과가 필요할 때 기록된 결과를 그대로 사용한다. 다이나믹 프로그래밍의 구현은 탑다운(하향식)과 보텀업(상향식) 방식으로 구성된다. 다이나믹 프로그래밍을 사용하는 조건은 다음과 같다. 1. 최적 부분 구조 (Optimal Substrcture) 큰 문제를 작은 문제로 나눌 수 있으며 작은 문제의 답을 모아서 큰 문제를 해결할 수 있다. 2. 중복되는 부분 문제 (Overlapping Subpr..
백트래킹 (Back-tracking) 정답을 찾는 도중에 막히면 더 이상 깊이 들어가지 않고 이전 단계로 돌아가서 정답을 찾는 방법 깊이 우선 탐색 DFS는 가능한 모든 경로를 탐색한다. 불필요할 것 같은 경로를 사전에 차단하지 않기 때문에 경우의 수를 줄이지 못한다. 백트래킹은 지금 경로가 정답이 아닐 것 같다면 이전 단계로 돌아가므로 DFS보다 효율적이다. 모든 가능한 경우의 수 중에서 특정한 조건을 만족하는 경우만 탐색하는 것이 백트래킹이다. 문제풀이에서는 모든 경우의 수를 탐색하는 과정에서 (DFS 등으로 구현) 조건문으로 절대 답이 될 수 없는 상황을 설정하고 그런 상황이 되었을 때는 탐색을 중지시킨 뒤 다시 이전 단계로 돌아가서 탐색하도록 구현할 수 있다. 백트래킹 예시 bool visited..
1. 음료수 얼려 먹기 connected component를 찾는 문제이다. 얼음을 얼릴 수 있는 공감이 상, 하, 좌, 우로 연결되어 있다고 표현할 수 있으므로 그래프 형태로 모델링 할 수 있다. 다음과 같이 3 x 3 크기의 얼음틀이 있다고 가정하면 위 그림과 같이 그래프로 만들 수 있다. 상, 하, 좌, 우로 연결되어 있는 노드들은 인접한 형태가 된다. 특정 지점에서 BFS 또는 DFS를 수행해서 이동 가능한 모든 경로에 대해서 다 방문처리를 진행하도록 처리할 수 있다. 1) BFS를 이용해서 구현 #include #include using namespace std; bool notAllowed[1001][1001]; int n, m; void bfs(int row, int col) { queue ..
https://shine-slowly.tistory.com/48 알고리즘 : DFS와 BFS (1) - DFS (C++로 구현) 참고 영상 : https://youtu.be/7C9RgOcvkvo?si=PuM-7RIBWbVPtYTw bfs와 dfs는 탐색 알고리즘이다. 내가 헷갈렸던 부분이 있는데 그래프를 인접 행렬, 인접 리스트로 표현할 수 있다고 배웠는데 bfs, dfs는 각각 큐랑 shine-slowly.tistory.com DFS에 관한 내용은 위 포스트에 있습니다. 참고 영상 : https://youtu.be/7C9RgOcvkvo?si=PuM-7RIBWbVPtYTw BFS (Breath-First Search, 너비우선탐색) 그래프에서 가까운 노드부터 우선적으로 탐색하는 알고리즘이다. BFS는 큐..