https://www.acmicpc.net/problem/10157좌석이 C × R 격자형으로 배치된 공연장이 있고, 각 좌석의 번호는 (x, y)로 표시된다. 대기번호를 가진 사람들에 대해 (1, 1) 좌석부터 시작해 시계 방향으로 돌아가면서 비어있는 좌석에 관객을 순서대로 배정한다. 비어있는 공연장의 크기를 나타내는 자연수 C, R이 주어져 있을 때, 대기번호가 K인 관객에게 배정될 좌석 번호 (x, y)를 찾는 문제다. 문제 탐색하기- 문제에서 구해야 하는 최종 정답은 무엇인지 탐색한 과정- 그 정답을 구하기 위해 어떻게 코드를 구현해야 할지 고민한 과정- 문제에 들어오는 범위를 파악하며 어떤 알고리즘을 쓸 수 있을지 고민해 가는 과정ex. 가능한 시간 복잡도, 알고리즘 선택입출력 제한5 ≤ C, ..
전체 글
https://www.acmicpc.net/problem/13164N명의 원생들을 키 순서대로 일렬로 줄 세우고, 총 K개의 조로 나누려고 한다. 각 조에는 원생이 적어도 1명 있어야 하고 같은 조에 속한 원생들은 서로 인접해 있어야 한다. 조별로 인원 수가 같을 필요는 없다. 나뉘어진 조에서 가장 키가 큰 원생과 가장 키가 작은 원생의 키 차이만큼 티셔츠를 만드는 비용이 생길 때, K개의 조에 대해 티셔츠를 만드는 비용의 합을 최소로 하는 문제다. 문제 탐색하기- 문제에서 구해야 하는 최종 정답은 무엇인지 탐색한 과정- 그 정답을 구하기 위해 어떻게 코드를 구현해야 할지 고민한 과정- 문제에 들어오는 범위를 파악하며 어떤 알고리즘을 쓸 수 있을지 고민해 가는 과정ex. 가능한 시간 복잡도, 알고리즘 선..
https://www.acmicpc.net/problem/182302 × N 크기의 바닥에 2 × 1 크기의 타일 A개와 2 × 2 크기의 타일 B개를 붙이려고 한다. 각 타일들에는 "예쁨"의 정도가 있고, 예쁨이 최대가 되도록 타일링을 하는 문제다. 문제 탐색하기- 문제에서 구해야 하는 최종 정답은 무엇인지 탐색한 과정- 그 정답을 구하기 위해 어떻게 코드를 구현해야 할지 고민한 과정- 문제에 들어오는 범위를 파악하며 어떤 알고리즘을 쓸 수 있을지 고민해 가는 과정ex. 가능한 시간 복잡도, 알고리즘 선택입출력 제한1 ≤ N, A, B ≤ 2,000N ≤ 2 × B + A1 ≤ 예쁨 ≤ 1,000,000 예쁨이 최대가 되도록 하기 위해 입력받은 정수 A개와 B개를 정렬해야 한다. n이 홀수인 경우 A ..
https://www.acmicpc.net/problem/14247산에는 n개의 나무가 있고, 각각 나무의 현재 길이는 H_i이며 나무가 자라는 속도는 A_i이다. 영선이가 하루에 한 나무씩 n일 산에 오르며 나무를 자를 때, 영선이가 얻을 수 있는 나무의 양의 최댓값을 구하는 문제다. 문제 탐색하기- 문제에서 구해야 하는 최종 정답은 무엇인지 탐색한 과정- 그 정답을 구하기 위해 어떻게 코드를 구현해야 할지 고민한 과정- 문제에 들어오는 범위를 파악하며 어떤 알고리즘을 쓸 수 있을지 고민해 가는 과정ex. 가능한 시간 복잡도, 알고리즘 선택입출력 제한1 ≤ n ≤ 100,0001 ≤ H_i ≤ 100,0001 ≤ A_i ≤ 10,000 나무마다 {H_i, A_i}를 쌍으로 저장하고, 하루에 한 나무씩 ..
https://www.acmicpc.net/problem/19941길이가 N인 식탁에 햄버거와 사람이 간격에 맞춰 존재한다. 사람들은 자신의 위치에서 거리가 K 이하인 햄버거를 먹을 수 있다. 이때 햄버거를 먹을 수 있는 사람의 최대 수를 구하는 문제다. 문제 탐색하기- 문제에서 구해야 하는 최종 정답은 무엇인지 탐색한 과정- 그 정답을 구하기 위해 어떻게 코드를 구현해야 할지 고민한 과정- 문제에 들어오는 범위를 파악하며 어떤 알고리즘을 쓸 수 있을지 고민해 가는 과정ex. 가능한 시간 복잡도, 알고리즘 선택입출력 제한1 ≤ N ≤ 20,0001 ≤ K ≤ 10 문자열을 반복문을 통해 접근하도록 코드를 짜야 한다. 햄버거를 선택할 수 있는 거리가 K로 일정하기 때문에 각 사람마다 자신의 위치에서 K를 ..
https://www.acmicpc.net/problem/13397N개의 수로 이뤄진 1차원 배열이 있고, 이 배열을 M개 이하의 구간으로 나눠 구간의 점수의 최댓값을 최소로 하려고 한다. 구간은 다음과 같은 조건을 만족해야 한다.하나의 구간은 하나 이상의 연속된 수들로 이루어짐배열의 각 수는 모두 하나의 구간에 포함돼야 함구간의 점수 = 구간에 속한 수의 최댓값 - 최솟값배열과 M이 주어질 때, (구간의 점수의 최댓값)의 최솟값을 구하는 문제다. 문제 탐색하기- 문제에서 구해야 하는 최종 정답은 무엇인지 탐색한 과정- 그 정답을 구하기 위해 어떻게 코드를 구현해야 할지 고민한 과정- 문제에 들어오는 범위를 파악하며 어떤 알고리즘을 쓸 수 있을지 고민해 가는 과정ex. 가능한 시간 복잡도, 알고리즘 선택..
https://www.acmicpc.net/problem/1577아래 그림처럼 가로 크기가 N이고 세로 크기가 M인 도시가 있다. 도시에는 중간중간 공사 중인 도로가 있고, 이 도로는 지나갈 수 없다. 세준이는 (0, 0)에 있는 집에서 (N, M)에 있는 학교까지 최단 거리(N + M)로 이동하려고 할 때, 서로 다른 경로의 경우의 수를 구하는 문제다. 문제 탐색하기- 문제에서 구해야 하는 최종 정답은 무엇인지 탐색한 과정- 그 정답을 구하기 위해 어떻게 코드를 구현해야 할지 고민한 과정- 문제에 들어오는 범위를 파악하며 어떤 알고리즘을 쓸 수 있을지 고민해 가는 과정ex. 가능한 시간 복잡도, 알고리즘 선택입출력 제한1 ≤ N, M ≤ 1000 ≤ K ≤ 500 ≤ a, c ≤ N0 ≤ b, d ≤ ..
스프링을 통해 객체의 초기화 작업과 종료 작업을 어떻게 진행하는지 알아보는 섹션! 1. 빈 생명주기 콜백스프링 빈의 라이프사이클a. 객체 생성 → 의존관계 주입스프링 빈은 객체를 생성하고 의존관계 주입이 다 끝난 다음에야 필요한 데이터를 사용할 준비가 됨Q. 객체 초기화 작업은 의존관계 주입이 모두 끝난 다음에 호출해야 하는데, 개발자가 의존관계 주입이 모두 끝난 시점을 확인할 수 있을까?A. 스프링은 의존관계 주입이 모두 끝나면 스프링 빈에게 콜백 메서드를 통해 초기화 시점을 알려주는 다양한 기능을 제공하고, 스프링 컨테이너가 종료되기 직전 소멸 콜백을 통해 안전하게 종료 작업을 진행할 수 있도록 함 b. 스프링 빈의 이벤트 라이프사이클스프링 컨테이너 생성 → 스프링 빈 생성 → 의존관계 주입 → 초기..