전체 글 163

다형성 (Polymorphism)

스피커를 하나 구매하려는 상황을 가정해 보자. 우리가 고를 수 있는 제품은 A, B, C사에서 제조된 제품들이다. 우리는 어떤 제품을 사더라도, 음악을 재생할 수 있는 기능만 있다면 목표는 달성할 수 있다. 더 좋은 음질, 더 다양한 기능을 가진 제품을 구매할 수도 있지만, 아무튼 어떤 스피커를 사더라도 "음악을 듣는다" 라는 목표는 달성할 수 있을 것이다. 그런데, 우리가 스피커로 음악을 듣기 위해 스피커가 어떤 원리로 음악을 재생하는지 알 필요가 있을까? 물론 없다. 우리는 그저 스피커에서 나오는 음악을 듣기만 하면 된다. 우리가 구매했던 스피커에 음성 인식 기술이 새로 업데이트되었다! 만약 스피커에 어떤 부가적인 기능이 추가되거나 삭제되어도, "스피커로 음악을 듣는다" 라는 우리의 원래 목표는 변함..

JAVA 2021.03.09

[프로그래머스] 뉴스 클러스터링

문제풀이 : programmers.co.kr/learn/courses/30/lessons/17677 코딩테스트 연습 - [1차] 뉴스 클러스터링 뉴스 클러스터링 여러 언론사에서 쏟아지는 뉴스, 특히 속보성 뉴스를 보면 비슷비슷한 제목의 기사가 많아 정작 필요한 기사를 찾기가 어렵다. Daum 뉴스의 개발 업무를 맡게 된 신입사원 튜브 programmers.co.kr 문제 유형 구현, Map 두 문자열의 각 두 문자씩을 분리해 Map에 원소로 넣는다. 이 풀이에서는 map

[백준] 5670 휴대폰 자판

문제 링크 : www.acmicpc.net/problem/5670 5670번: 휴대폰 자판 휴대폰에서 길이가 P인 영단어를 입력하려면 버튼을 P번 눌러야 한다. 그러나 시스템프로그래밍 연구실에 근무하는 승혁연구원은 사전을 사용해 이 입력을 더 빨리 할 수 있는 자판 모듈을 개발 www.acmicpc.net 문제 유형 자료 구조, 트라이 트라이 자료구조로 해결이 가능한 문제이다. 트라이의 find 함수에서, 다음과 같은 경우에 반환값을 1 증가시켜 정답을 구하면 된다. 다른 문자열의 끝을 지나는 경우 (코드의 finish) 자식의 수가 2 이상인 트라이 객체를 지날 경우 root 트라이 객체일 경우 (최초 1번의 입력) [코드] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1..

[백준] 8452 그래프와 쿼리

문제 링크 : www.acmicpc.net/problem/8452 8452번: 그래프와 쿼리 첫 번째 줄에 그래프의 정점, 간선의 수와 질의의 수를 나타내는 n, m, q 가 주어진다. (1 ≤ n ≤ 1, 000, 1 ≤ m ≤ 100, 000, 1 ≤ q ≤ 200, 000) 정점들은 순서대로 1부터 n까지 번호가 매겨져 있고, 간선들 www.acmicpc.net 문제 유형 BFS, Dijkstra, 오프라인 쿼리 오프라인 쿼리(Offline Query)란, 주어지는 쿼리들을 받는 즉시 처리하지 않고 모두 저장해둔 뒤 임의의 순서로 쿼리를 해결하는 기법을 말한다. 이 문제에서는 모든 쿼리를 다 받은 뒤, 쿼리를 역순으로 처리함으로써 문제를 간단화하여 해결할 수 있다. 즉, 원래의 U k 쿼리는 그래프..

[백준] 11003 최솟값 찾기

문제 링크 : www.acmicpc.net/problem/11003 11003번: 최솟값 찾기 N개의 수 A1, A2, ..., AN과 L이 주어진다. Di = Ai-L+1 ~ Ai 중의 최솟값이라고 할 때, D에 저장된 수를 출력하는 프로그램을 작성하시오. 이때, i ≤ 0 인 Ai는 무시하고 D를 구해야 한다. www.acmicpc.net 문제 유형 Deque, 슬라이딩 윈도우 덱(Deque)을 사용해 구간 별 최솟값을 찾는 문제이다. 덱은 front와 back의 두 포인터를 가진 자료구조로, 삽입이 양방향으로 가능한 벡터라고 생각하면 편하다. 덱의 이러한 특징으로, 우리는 덱의 원소들을 특정 우선순위에 맞게 유지시킬 수 있다. 즉, 다음과 같은 과정을 통해 덱을 항상 오름차순으로 유지시킨다. 현재 ..

[백준] 1945 직사각형

문제 링크 : www.acmicpc.net/problem/1945 1945번: 직사각형 첫째 줄에 직사각형의 개수 N(1≤N≤10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 직사각형의 왼쪽 아래 꼭짓점의 좌표 xbl, ybl과 오른쪽 위 꼭짓점의 좌표 xtr, ytr이 순서대로 빈칸 하나를 사이에 www.acmicpc.net 문제 유형 Sweeping 다음과 같은 예제를 보자. 이 예제에서 각 직사각형을 관통하기 시작하는 직선과 관통이 끝나는 직선을 알기 위해서는, 다음 그림처럼 각 직사각형마다 두 개의 점만 알면 된다. 빨간색 점은 직사각형을 관통하기 시작하는 직선과의 교점이며, 파란색 점은 직사각형의 관통이 끝나는 직선과의 교점이다. 따라서 우리는 다음과 같은 순서로 이 점들을 훑으며 정답을 구..

[SQL] JOIN

JOIN Orders 테이블에서 3번 ShipperID 가 배송하는 주문의 목록을 조회 //JOIN을 사용하지 않은 SQL문 SELECT Shippers.ShipperID, ShipperName, OrderID FROM Shippers, Orders WHERE Shippers.ShipperID = Orders.ShipperID AND Shippers.ShipperID = 3; //JOIN을 사용한 SQL문 SELECT Shippers.ShipperID, ShipperName, OrderID FROM Shippers INNER JOIN Orders ON Shippers.ShipperID = Orders.ShipperID WHERE Shippers.ShipperID = 3; 배송하는 주문의 수가 60개에서 ..

[SQL] GROUP BY, HAVING

집계 함수와 GROUP COUNT, SUM, AVG, MAX, MIN Customers 테이블에서 국적이 영국인 고객의 수를 조회 SELECT COUNT(*) AS Result FROM Customers WHERE Country = 'UK'; COUNT는 NULL값을 세지 않는다. Products 테이블에서 2번 카테고리에 속한 제품의 가격 총합을 조회 SELECT CategoryID, SUM(Price) as SumOfPrice FROM Products WHERE CategoryID = 2; OrderDetails 테이블에서 10248번 주문의 평균 구매수량 조회 SELECT OrderID, AVG(Quantity) as AvgOfQuantity FROM OrderDetails WHERE..

[SQL] ORDER BY

ORDER BY Products 테이블에서 2번 카테고리에 속한 제품들을 가격 오름차순으로 조회 SELECT * FROM Products WHERE CategoryID = 2 ORDER BY Price ASC; OrderDetails 테이블에서 ProductID + Quantity 값의 내림차순으로 모든 주문을 조회 SELECT OrderDetailID, ProductID * Quantity as value FROM OrderDetails ORDER BY value DESC; Products 테이블에서 각 제품을 이름 오름차순, 가격 내림차순 조회 //여러 개의 정렬 기준 사용 SELECT * FROM Products ORDER BY ProductName ASC, Price DESC;