분류 전체보기
-
문제 스택 (stack)은 기본적인 자료구조 중 하나로, 컴퓨터 프로그램을 작성할 때 자주 이용되는 개념이다. 스택은 자료를 넣는 (push) 입구와 자료를 뽑는 (pop) 입구가 같아 제일 나중에 들어간 자료가 제일 먼저 나오는 (LIFO, Last in First out) 특성을 가지고 있다. 1부터 n까지의 수를 스택에 넣었다가 뽑아 늘어놓음으로써, 하나의 수열을 만들 수 있다. 이때, 스택에 push하는 순서는 반드시 오름차순을 지키도록 한다고 하자. 임의의 수열이 주어졌을 때 스택을 이용해 그 수열을 만들 수 있는지 없는지, 있다면 어떤 순서로 push와 pop 연산을 수행해야 하는지를 알아낼 수 있다. 이를 계산하는 프로그램을 작성하라. 입력 첫 줄에 n (1 ≤ n ≤ 100,000)이 주어..
스택_백준 #1874:스택 수열문제 스택 (stack)은 기본적인 자료구조 중 하나로, 컴퓨터 프로그램을 작성할 때 자주 이용되는 개념이다. 스택은 자료를 넣는 (push) 입구와 자료를 뽑는 (pop) 입구가 같아 제일 나중에 들어간 자료가 제일 먼저 나오는 (LIFO, Last in First out) 특성을 가지고 있다. 1부터 n까지의 수를 스택에 넣었다가 뽑아 늘어놓음으로써, 하나의 수열을 만들 수 있다. 이때, 스택에 push하는 순서는 반드시 오름차순을 지키도록 한다고 하자. 임의의 수열이 주어졌을 때 스택을 이용해 그 수열을 만들 수 있는지 없는지, 있다면 어떤 순서로 push와 pop 연산을 수행해야 하는지를 알아낼 수 있다. 이를 계산하는 프로그램을 작성하라. 입력 첫 줄에 n (1 ≤ n ≤ 100,000)이 주어..
2022.03.01 -
문제 정수를 저장하는 덱(Deque)를 구현한 다음, 입력으로 주어지는 명령을 처리하는 프로그램을 작성하시오. 명령은 총 여덟 가지이다. push_front X: 정수 X를 덱의 앞에 넣는다. push_back X: 정수 X를 덱의 뒤에 넣는다. pop_front: 덱의 가장 앞에 있는 수를 빼고, 그 수를 출력한다. 만약, 덱에 들어있는 정수가 없는 경우에는 -1을 출력한다. pop_back: 덱의 가장 뒤에 있는 수를 빼고, 그 수를 출력한다. 만약, 덱에 들어있는 정수가 없는 경우에는 -1을 출력한다. size: 덱에 들어있는 정수의 개수를 출력한다. empty: 덱이 비어있으면 1을, 아니면 0을 출력한다. front: 덱의 가장 앞에 있는 정수를 출력한다. 만약 덱에 들어있는 정수가 없는 경우에..
덱_백준 #10866:덱문제 정수를 저장하는 덱(Deque)를 구현한 다음, 입력으로 주어지는 명령을 처리하는 프로그램을 작성하시오. 명령은 총 여덟 가지이다. push_front X: 정수 X를 덱의 앞에 넣는다. push_back X: 정수 X를 덱의 뒤에 넣는다. pop_front: 덱의 가장 앞에 있는 수를 빼고, 그 수를 출력한다. 만약, 덱에 들어있는 정수가 없는 경우에는 -1을 출력한다. pop_back: 덱의 가장 뒤에 있는 수를 빼고, 그 수를 출력한다. 만약, 덱에 들어있는 정수가 없는 경우에는 -1을 출력한다. size: 덱에 들어있는 정수의 개수를 출력한다. empty: 덱이 비어있으면 1을, 아니면 0을 출력한다. front: 덱의 가장 앞에 있는 정수를 출력한다. 만약 덱에 들어있는 정수가 없는 경우에..
2022.03.01 -
테이블 피봇팅: 테이블의 구조를 바꾸는 것 SELECT CASE WHEN categoryID = 1 THEN price ELSE NULL END AS category1_price, * FROM Products; categoryID=1의 Price 평균을 구하고 싶다면? SELECT AVG(CASE WHEN categoryID = 1 THEN price ELSE NULL END) AS category1_price, * FROM Products; 테이블 피봇팅 SELECT AVG(CASE WHEN categoryID = 1 THEN price ELSE NULL END) AS category1_price, AVG(CASE WHEN categoryID = 2 THEN price ELSE NULL END) AS ..
MySQL_조건문 CASE를 활용한 테이블 피봇테이블 피봇팅: 테이블의 구조를 바꾸는 것 SELECT CASE WHEN categoryID = 1 THEN price ELSE NULL END AS category1_price, * FROM Products; categoryID=1의 Price 평균을 구하고 싶다면? SELECT AVG(CASE WHEN categoryID = 1 THEN price ELSE NULL END) AS category1_price, * FROM Products; 테이블 피봇팅 SELECT AVG(CASE WHEN categoryID = 1 THEN price ELSE NULL END) AS category1_price, AVG(CASE WHEN categoryID = 2 THEN price ELSE NULL END) AS ..
2022.02.27 -
문제 정수를 저장하는 큐를 구현한 다음, 입력으로 주어지는 명령을 처리하는 프로그램을 작성하시오. 명령은 총 여섯 가지이다. push X: 정수 X를 큐에 넣는 연산이다. pop: 큐에서 가장 앞에 있는 정수를 빼고, 그 수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다. size: 큐에 들어있는 정수의 개수를 출력한다. empty: 큐가 비어있으면 1, 아니면 0을 출력한다. front: 큐의 가장 앞에 있는 정수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다. back: 큐의 가장 뒤에 있는 정수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다. 입력 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 2,000,000)이 주어진다. ..
큐_백준 #18258:큐 2문제 정수를 저장하는 큐를 구현한 다음, 입력으로 주어지는 명령을 처리하는 프로그램을 작성하시오. 명령은 총 여섯 가지이다. push X: 정수 X를 큐에 넣는 연산이다. pop: 큐에서 가장 앞에 있는 정수를 빼고, 그 수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다. size: 큐에 들어있는 정수의 개수를 출력한다. empty: 큐가 비어있으면 1, 아니면 0을 출력한다. front: 큐의 가장 앞에 있는 정수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다. back: 큐의 가장 뒤에 있는 정수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다. 입력 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 2,000,000)이 주어진다. ..
2022.02.27 -
문제 괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고 부른다. 한 쌍의 괄호 기호로 된 “( )” 문자열은 기본 VPS 이라고 부른다. 만일 x 가 VPS 라면 이것을 하나의 괄호에 넣은 새로운 문자열 “(x)”도 VPS 가 된다. 그리고 두 VPS x 와 y를 접합(concatenation)시킨 새로운 문자열 xy도 VPS 가 된다. 예를 들어 “(())()”와 “((()))” 는 VPS 이지만 “(()(”, “(())()))” , 그리고 “(()” 는 모두 VPS 가 아닌 문자열이다. 여러분은 입력으로 주어진 괄호 문자열..
문자열_백준 #9012:괄호문제 괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고 부른다. 한 쌍의 괄호 기호로 된 “( )” 문자열은 기본 VPS 이라고 부른다. 만일 x 가 VPS 라면 이것을 하나의 괄호에 넣은 새로운 문자열 “(x)”도 VPS 가 된다. 그리고 두 VPS x 와 y를 접합(concatenation)시킨 새로운 문자열 xy도 VPS 가 된다. 예를 들어 “(())()”와 “((()))” 는 VPS 이지만 “(()(”, “(())()))” , 그리고 “(()” 는 모두 VPS 가 아닌 문자열이다. 여러분은 입력으로 주어진 괄호 문자열..
2022.02.27 -
CASE로 시작하고 END로 끝나야 한다. 그리고 그 사이에는 WHEN 조건 THEN 결과 가 들어가야 한다. SELECT CASE WHEN categoryid = 1 THEN '음료' WHEN categoryid = 2 THEN '조미료' ELSE '기타' END AS 'categoryName' , * FROM Products; 조건문으로 만든 새 칼럼으로 GROUP BY를 하고 싶다면? SELECT CASE WHEN categoryid = 1 THEN '음료' WHEN categoryid = 2 THEN '소스' ELSE '이외' END AS newCategory , AVG(Price) FROM Products GROUP BY newCategory; HackerRank : Type of Triangl..
MySQL_조건문 CASECASE로 시작하고 END로 끝나야 한다. 그리고 그 사이에는 WHEN 조건 THEN 결과 가 들어가야 한다. SELECT CASE WHEN categoryid = 1 THEN '음료' WHEN categoryid = 2 THEN '조미료' ELSE '기타' END AS 'categoryName' , * FROM Products; 조건문으로 만든 새 칼럼으로 GROUP BY를 하고 싶다면? SELECT CASE WHEN categoryid = 1 THEN '음료' WHEN categoryid = 2 THEN '소스' ELSE '이외' END AS newCategory , AVG(Price) FROM Products GROUP BY newCategory; HackerRank : Type of Triangl..
2022.02.26 -
GROUP BY SupplierID 별로 Price의 평균을 보고 싶을 경우에는? SELECT SupplierID , AVG(Price) FROM Products GROUP BY SupplierID GROUP BY에 사용된 컬럼은 SELECT에 꼭 들어가야하고 그룹 별 보고싶은 집계함수도 SELECT에 들어가야한다. GROUP BY 여러 개의 칼럼 : 여러 가지 기준으로 그룹을 만들고 싶을 때 SELECT SupplierID , Categoryid , AVG(Price) FROM Products GROUP BY SupplierID, Categoryid HAVING GROUP BY 결과물들 중에서 AVG(Price) >= 100 이상인 것을 찾고 싶다면? WHERE AVG(Price) >= 100 으로 하..
MySQL_GROUP BY & HAVINGGROUP BY SupplierID 별로 Price의 평균을 보고 싶을 경우에는? SELECT SupplierID , AVG(Price) FROM Products GROUP BY SupplierID GROUP BY에 사용된 컬럼은 SELECT에 꼭 들어가야하고 그룹 별 보고싶은 집계함수도 SELECT에 들어가야한다. GROUP BY 여러 개의 칼럼 : 여러 가지 기준으로 그룹을 만들고 싶을 때 SELECT SupplierID , Categoryid , AVG(Price) FROM Products GROUP BY SupplierID, Categoryid HAVING GROUP BY 결과물들 중에서 AVG(Price) >= 100 이상인 것을 찾고 싶다면? WHERE AVG(Price) >= 100 으로 하..
2022.02.25 -
COUNT SELECT COUNT(*) FROM Products; COUNT(*) ➔ 선택한 컬럼의 데이터 행 개수를 세준다. ▶ 그러나 특정 컬럼의 데이터 행 개수를 셀 때 NULL값이 있다면? ProductID ProductNAme Price 1 apple 14 2 book 24 3 NULL 15 SELECT COUNT(ProductName) FROM Products; ➔ NULL값을 제외한 데이터 개수인 2가 출력된다. ▶ 중복된 값을 제외한 데이터 개수를 확인하고 싶을 때는? SELECT COUNT(DISTINCT SupplierId) FROM Products; SUM 특정 칼럼의 합계를 알고 싶을 때 SELECT SUM(Price) FROM Products; AVG 특정 칼럼의 평균을 알고 싶을..
MySQL_데이터 요약 통계(집계함수)COUNT SELECT COUNT(*) FROM Products; COUNT(*) ➔ 선택한 컬럼의 데이터 행 개수를 세준다. ▶ 그러나 특정 컬럼의 데이터 행 개수를 셀 때 NULL값이 있다면? ProductID ProductNAme Price 1 apple 14 2 book 24 3 NULL 15 SELECT COUNT(ProductName) FROM Products; ➔ NULL값을 제외한 데이터 개수인 2가 출력된다. ▶ 중복된 값을 제외한 데이터 개수를 확인하고 싶을 때는? SELECT COUNT(DISTINCT SupplierId) FROM Products; SUM 특정 칼럼의 합계를 알고 싶을 때 SELECT SUM(Price) FROM Products; AVG 특정 칼럼의 평균을 알고 싶을..
2022.02.24