전체 75

[TIL] SQL Project Planning 간단 풀이 # MySQL # SQL

HackerRank Intermediate - SQL Project Planning이전 포스팅에서 다뤘던 해커랭크 SQL Project Planning 문제 풀이가 너무 복잡해서 간단한 버전의 풀이 방법을 고민하다가 답을 찾아서 다시 포스팅 해본다..ㅋㅋ 👉[TIL] 다중 CTE 활용한 복잡한 문제 해결 # MySQL # SQL👉 문제 바로가기(HackerRank) [간단 버전 풀이]SELECT t1.Start_Date, MIN(t2.End_Date)FROM (SELECT Start_Date FROM Projects WHERE Start_Date NOT IN (SELECT End_Date FROM Projects)) t1, (SELECT End_Date ..

DA Study/TIL 2025.04.09

[TIL] 재귀 쿼리 (Recursive CTE) # MySQL # SQL

HackerRank Intermediate - Draw The Triangle 2👉 문제 바로가기(HackerRank)WITH RECURSIVE cte AS( SELECT 1 AS N UNION ALL SELECT (N + 1) AS N FROM cte WHERE N [문제 상황]'*'을 다음줄로 넘어갈 때 하나씩 늘려 삼각형 모양으로 출력해야 한다.이를 위해 매 줄 SELECT REPEAT('*', n); 을 사용해서 출력해야 한다.[해결] 파이썬의 반복문처럼 매 줄 하나씩 개수를 하나씩 더해서 늘려주는 구문을 작성한다.재귀 쿼리(Recursive CTE)을 사용한다.Anchor - SELECT 1 AS N반복 조건문 - SELECT (N + 1) AS N FROM cte WHERE N [회고..

DA Study/TIL 2025.04.06

[백준] 괄호 #자료구조 #알고리즘

문제 바로가기 👉 백준 9012번☑️  문제 요약입력으로 주어진 괄호 문자열이 VPS 인지 아닌지를 판단해서 그 결과를 YES 와 NO 로 나타내는 프로그램 작성- 입력 데이터는 표준 입력을 사용한다. - 입력은 T개의 테스트 데이터로 주어진다.- 첫 번째 줄에는 입력 데이터의 수를 나타내는 정수 T가 주어진다. - 각 테스트 데이터의 첫째 줄에는 괄호 문자열이 한 줄에 주어진다.- 하나의 괄호 문자열의 길이는 2 이상 50 이하 ☑️  KEY 포인트문제 풀이 과정을 먼저 생각한다.먼저 몇 개의 텍스트가 입력될 건지 입력받는다.입력받은 텍스트 수 만큼 텍스트를 입력 받는다.가능할 때까지 완성된 괄호를 제거한다.위 과정을 코드로 구현한다.input()을 사용해서 텍스트 수와 텍스트를 입력받는다.텍스트 단..

[백준] 단어 뒤집기 #자료구조 #알고리즘

문제 바로가기 👉 백준 9093번☑️  문제 요약문장이 주어졌을 때, 단어를 모두 뒤집어서 출력하는 프로그램 작성- 첫째 줄에 테스트 케이스의 개수 T가 주어진다.- 각 테스트 케이스는 한 줄로 이루어져 있으며, 문장이 하나 주어진다.- 단어의 길이는 최대 20, 문장의 길이는 최대 1000이다.- 단어와 단어 사이에는 공백 존재 ☑️  KEY 포인트문제 풀이 과정을 먼저 생각한다.먼저 몇 개의 문장이 입력될 건지 입력받는다.입력받은 문장의 수 만큼 문장을 입력 받는다.문장 하나를 입력받고, 단어 단위로 쪼갠다.단어를 뒤집에서 새로운 문장에 추가한다.위 과정을 코드로 구현한다.input()을 사용해서 문장 수와 문장을 입력받는다.문장 단위 for문, 단어 단위 for문으로 구조를 만든다.단어 단위에서 ..

[백준] 정수 저장 및 명령 처리 프로그램 #스택 #알고리즘

문제 바로가기 👉 백준 10828번☑️  문제 요약정수를 저장하는 스택을 구현한 다음, 입력으로 주어지는 명령을 처리하는 프로그램 작성명령 종류push X: 정수 X를 스택에 넣는 연산이다.pop: 스택에서 가장 위에 있는 정수를 빼고, 그 수를 출력한다. 만약 스택에 들어있는 정수가 없는 경우에는 -1을 출력한다.size: 스택에 들어있는 정수의 개수를 출력한다.empty: 스택이 비어있으면 1, 아니면 0을 출력한다.top: 스택의 가장 위에 있는 정수를 출력한다. 만약 스택에 들어있는 정수가 없는 경우에는 -1을 출력한다. ☑️  KEY 포인트문제 풀이 과정을 먼저 생각한다.먼저 몇 개의 명령이 입력될 건지 입력받는다.입력받은 명령의 수 만큼 명령을 입력 받는다.명령 하나를 입력받을 때, 위 '명..

[프로그래머스] K번째수 #정렬 #알고리즘

문제 바로가기 👉 프로그래머스☑️  문제 요약주어진 배열 array에서 특정 구간 [i, j]을 잘라 정렬한 후, k번째 숫자를 구한다.제한사항• array의 길이는 1~100• commands의 길이는 1~50• array의 원소 값과 i, j, k 값은 1~100 ☑️  KEY 포인트문제 풀이 과정을 먼저 생각한다.array의 i번째부터 j번째까지 슬라이싱자른 배열을 정렬정렬된 배열에서 k번째 숫자를 찾음위 과정을 commands에 있는 모든 [i, j, k]에 대해 수행하여 결과 배열을 반환위 과정을 코드로 구현한다.리스트 슬라이싱 활용(array[i-1:j]) - 리스트 인덱스는 0부터 시작하므로 i에서 1을 빼준다.반복문을 통해서 commands 안에 있는 리스트들(개별 command)로 모두..

[프로그래머스] 같은 숫자는 싫어 #스택/큐 #알고리즘

문제 바로가기 👉 프로그래머스☑️  문제 요약배열 arr에서 연속적으로 중복된 숫자를 하나만 남기고 제거해야 합니다.남은 숫자들의 순서는 유지해야 합니다.제한 사항• arr의 길이는 최대 1,000,000• arr의 원소는 0~9 사이의 정수 ☑️  KEY 포인트반복문을 통해서 배열의 첫번째 숫자부터 그 다음 숫자와 비교하며 체크해 나간다.2가지의 갈래로 경우의 수를 나눠야 한다. (1) 배열의 끝자리일 때와 아닐 때(2) 현재 숫자가 다음 숫자와 같을 때와 아닐 때배열의 끝자리가 아닐 때, 현재 숫자와 다음 숫자를 비교하여 두 수가 다르면 현재 숫자를 answer 리스트에 추가현재 숫자가 배열의 끝자리일 경우 무조건 answer 리스트에 추가 ☑️  해결 코드def solution(arr): a..

[프로그래머스] 폰켓몬 #해시 #알고리즘

문제 바로가기 👉 프로그래머스☑️  문제 요약당신은 폰켓몬을 잡기 위한 오랜 여행 끝에, 홍 박사님의 연구실에 도착했습니다. 홍 박사님은 당신에게 자신의 연구실에 있는 총 N 마리의 폰켓몬 중에서 N/2마리를 가져가도 좋다고 했습니다.1. N마리의 폰켓몬 중 N/2마리를 선택할 때, 최대한 다양한 종류를 선택해야 한다.2. 같은 번호의 폰켓몬은 같은 종류로 간주된다.3. 선택할 수 있는 폰켓몬의 최대 종류 개수를 반환해야 한다.4. nums 배열의 길이 N은 1 이상 10,000 이하의 짝수이며, 폰켓몬 번호는 1 이상 200,000 이하이다.5. 최적의 선택 방법이 여러 개여도, 최대 종류 개수 하나만 반환한다. ☑️  KEY 포인트동일한 배열에서 같은 폰켓몬 종류를 제외한, Unique한 종류 개수..

[TIL] 리스트에서 요소 개수 카운트하기, 문자열 길이 반환 함수(CHAR_LENGTH) 활용 #SQL #MySQL

단어 리스트에서 단어 개수 카운트데이터 출처: Kaggle(링크)SELECT pizza_type_id, (CHAR_LENGTH(ingredients) - CHAR_LENGTH(REPLACE(ingredients,",","")) +1) AS type_ingredients_cntFROM pizza_typesORDER BY pizza_type_id[ 문제 상황 ]피자 재료가 콤마(,)를 통해 나열되어 있다.피자별로 피자 재료의 개수를 세어 조회해야 한다.MySQL에는 직접적으로 단어를 세는 함수가 없다.[ 해결 ]먼저 컬럼값의 전체 문자열 수를 카운트 한다.콤마(,)를 없앤 컬럼값의 전체 문자열 수를 카운트 한다.두 값의 차이가 곧 콤마(,)의 개수이다.콤마의 개수에 1을 더하면 요소의..

DA Study/TIL 2025.03.18