[BaekJoon] 2630번 - 색종이 만들기 [Java][C++]
문제 링크 1. 아이디어 N×N 크기의 종이에 대해 현재 바라보는 종이가 전부 같은 색이 아니면 4등분을 한 후 다시 현재 바라보는 종이가 전부 같은 색인지 판단하며 같은 색이면 해당 색상의 개수를 세는 문제다. 현재 바라보는 색종이의 영역을 활용한 재귀 함수로 해결할 수 있다. 재귀 함수는 현재 바라보는 색종이의 맨 왼쪽 윗 칸의 위치 ...
문제 링크 1. 아이디어 N×N 크기의 종이에 대해 현재 바라보는 종이가 전부 같은 색이 아니면 4등분을 한 후 다시 현재 바라보는 종이가 전부 같은 색인지 판단하며 같은 색이면 해당 색상의 개수를 세는 문제다. 현재 바라보는 색종이의 영역을 활용한 재귀 함수로 해결할 수 있다. 재귀 함수는 현재 바라보는 색종이의 맨 왼쪽 윗 칸의 위치 ...
문제 링크 1. 문제 풀이 전형적인 그리디 알고리즘의 활동 선택 문제로 한 개의 회의실에서 최대한 많은 회의를 하려면 회의 시간이 빨리 끝나는 회의부터 회의실에 배정하면 된다. 따라서 회의의 종료 시간을 기준으로 오름차순으로 정렬한 후 해당 회의를 배정하면 다음 회의는 이전에 배정한 회의의 종료 시간보다 시작 시간이 같거나 늦는 경우 배정하...
문제 링크 1. 아이디어 N×N 크기의 종이에 대해 현재 바라보는 종이가 전부 같은 숫자가 아니면 9등분을 한 후 다시 현재 바라보는 종이가 전부 같은 숫자인지 판단하며 같은 숫자면 해당 숫자의 개수를 세는 문제다. 현재 바라보는 종이의 영역을 활용한 재귀 함수로 해결할 수 있다. 재귀 함수는 현재 바라보는 종이의 맨 왼쪽 윗 칸의 위치 ...
문제 링크 1. 문제 풀이 맨 왼쪽 도시부터 오른쪽 도시까지 이동할 때 최소 비용을 구하는 문제로 그리디 알고리즘을 활용하면 해결할 수 있다. 현재 도시에서 다음 도시로 가는 거리에 대해 현재까지 지나온 도시 중 기름 값이 가장 쌌던 도시에서 기름을 채워서 가면 최소 비용으로 맨 오른쪽 도시까지 갈 수 있다.(기름통의 크기가 무제한이므로)...
문제 링크 1. 문제 풀이 ATM에서 각 사람은 앞사람이 인출하는데 걸리는 시간만큼 기다린 후 인출을 할 수 있다. 이때 첫 번째 사람부터 마지막 사람까지는 첫 번째 사람이 인출하는데 걸리는 시간만큼 기다려야 하고(첫 번째 사람은 자신의 인출 시간만큼 소요), 두 번째 사람부터 마지막 사람까지는 두 번째 사람이 인출하는데 걸리는 시간만큼 또...
문제 링크 1. 문제 풀이 $N$ 번째 피보나치 함수에서 $0$ 과 $1$ 의 출력 횟수를 구하는 문제로 다이나믹 프로그래밍을 활용하면 해결할 수 있다. $N$ 번째 피보나치 수는 $N - 1$ 번째 피보나치 수와 $N - 2$ 번째 피보나치 수를 재귀 호출하므로 $0$ 과 $1$ 의 출력 횟수 역시 두 수의 $0$ 과 $1$ 의 출력 횟수...
문제 링크 1. 문제 풀이 두 정수 $n$, $m$ 에 대해 몫과 나머지를 구하는 문제로 수의 범위가 매우 크다. 큰 수를 다룰 수 있는 라이브러리를 활용하면 간단하게 해결할 수 있다. 2. 코드 1. 풀이 [Java] 큰 정수의 연산을 처리할 수 있는 BigInteger 클래스를 활용했다. import java.io.*; i...
문제 링크 1. 아이디어 오늘 날짜를 양식에 맞춰 출력만 하면 된다. 한국 시간은 세계 표준시보다 9시간 빨라서 한국 시간으로 오전 9시 전까지는 하루 전 날짜를 출력해야 한다. 2. 코드 1. 풀이 [Java] public class Main { public static void main(String[] args) { ...
문제 링크 1. 문제 풀이 09:00부터 19:59까지의 시간대는 HOUR 함수와 BETWEEN 연산자를 활용해서 필터링하고 그룹핑을 해줬다. 2. 쿼리 SELECT HOUR(DATETIME) AS HOUR, COUNT(*) FROM ANIMAL_OUTS WHERE HOUR(DATETIME) BETWEEN 9 AND 19 GROU...
문제 링크 1. 문제 풀이 IFNULL 함수를 활용해서 NULL이면 No name이 표시되게 했다. 2. 쿼리 SELECT ANIMAL_TYPE, IFNULL(NAME, 'No name'), SEX_UPON_INTAKE FROM ANIMAL_INS ORDER BY ANIMAL_ID;