[BaekJoon] 10826번 - 피보나치 수 4 [Java]
문제 링크 1. 문제 풀이 피보나치 수열에서 $n$ 번째 수를 구하는 문제로 주어진 점화식을 활용한 다이나믹 프로그래밍으로 해결할 수 있다. 다만 수의 크기가 매우 커질 수 있어서 큰 수를 다루는 라이브러리를 활용하거나 직접 계산을 해야 한다. 2. 코드 1. 풀이 [Java] import java.io.*; import jav...
문제 링크 1. 문제 풀이 피보나치 수열에서 $n$ 번째 수를 구하는 문제로 주어진 점화식을 활용한 다이나믹 프로그래밍으로 해결할 수 있다. 다만 수의 크기가 매우 커질 수 있어서 큰 수를 다루는 라이브러리를 활용하거나 직접 계산을 해야 한다. 2. 코드 1. 풀이 [Java] import java.io.*; import jav...
문제 링크 1. 문제 풀이 각 대장균의 형질은 2진수로 표현되어 있다. 이는 비트 연산으로 형질의 보유 여부를 파악할 수 있는데 2번 형질을 보유하지 않음은 2와의 비트 AND 연산으로, 1번 또는 3번 형질을 보유하고 있음은 1, 4와의 비트 AND 연산으로 파악할 수 있다. 2. 쿼리 SELECT COUNT(*) AS COUN...
문제 링크 1. 문제 풀이 상반기와 하반기 점수의 합으로 한해 평가 점수를 구하므로 HR_EMPLOYEES 테이블과 HR_GRADE 테이블을 JOIN 후 EMP_NO로 그룹핑을 해줬다. 이후 SUM 함수의 결과를 기준으로 내림차순으로 정렬하고 LIMIT으로 하나만 뽑으면 된다. 2. 쿼리 SELECT SUM(g.SCORE)...
문제 링크 1. 문제 풀이 PARENT 아이템의 희귀도가 RARE인 경우 정보를 출력하는 문제로 JOIN을 두 번하는 방식으로 해결할 수 있고, 서브쿼리와 IN 연산자를 활용해도 해결할 수 있다. 2. 쿼리 1. JOIN + JOIN PARENT 아이템을 의미하는 p와 ITEM_TREE, 아이템을 의미하는 c를 전부 JOIN 해...
문제 링크 1. 문제 풀이 ROOT 아이템은 PARENT 아이템이 없는 아이템으로 ITEM_INFO 테이블과 ITEM_TREE 테이블을 ITEM_ID로 JOIN 후 PARENT_ITEM_ID가 NULL인 것만 필터링하면 된다. 2. 쿼리 SELECT i.ITEM_ID, i.ITEM_NAME FROM ITEM_INFO AS i JO...
문제 링크 1. 문제 풀이 DATEDIFF 함수로 대여 종료일과 대여 시작일의 차를 구할 수 있다. AVG 함수와 ROUND 함수로 반올림한 평균 대여 기간을 구했고, 이를 HAVING 절의 조건으로 활용했다. 2. 쿼리 SELECT CAR_ID, ROUND(AVG(DATEDIFF(END_DATE, START_DATE) + 1),...
문제 링크 1. 문제 풀이 DATEDIFF 함수로 대여 종료일과 대여 시작일의 차를 구할 수 있다. 대여 기간이 30일 이상인지는 대여 종료일과 대여 시작일의 차가 29일 이상이어야 한다.(대여 기간은 시작일과 종료일을 포함하므로) 2. 쿼리 SELECT HISTORY_ID, CAR_ID, DATE_FORMA...
문제 링크 1. 문제 풀이 $N \times N$ 크기의 종이에 대해 현재 바라보는 종이가 전부 같은 색이 아니면 4등분을 한 후 다시 현재 바라보는 종이가 전부 같은 색인지 판단하며 같은 색이면 해당 색상의 개수를 세는 문제다. 현재 바라보는 색종이의 영역을 활용한 재귀 함수로 해결할 수 있다. 재귀 함수는 현재 바라보는 색종이의 맨 왼...
문제 링크 1. 문제 풀이 전형적인 그리디 알고리즘의 활동 선택 문제로 한 개의 회의실에서 최대한 많은 회의를 하려면 회의 시간이 빨리 끝나는 회의부터 회의실에 배정하면 된다. 따라서 회의의 종료 시간을 기준으로 오름차순으로 정렬한 후 해당 회의를 배정하면 다음 회의는 이전에 배정한 회의의 종료 시간보다 시작 시간이 같거나 늦는 경우 배정하...
문제 링크 1. 문제 풀이 $N \times N$ 크기의 종이에 대해 현재 바라보는 종이가 전부 같은 숫자가 아니면 9등분을 한 후 다시 현재 바라보는 종이가 전부 같은 숫자인지 판단하며 같은 숫자면 해당 숫자의 개수를 세는 문제다. 현재 바라보는 종이의 영역을 활용한 재귀 함수로 해결할 수 있다. 재귀 함수는 현재 바라보는 종이의 맨 왼...