https://www.acmicpc.net/problem/17951시험지의 개수와 시험지를 나눌 그룹의 수가 주어질 때, 시험지를 그룹으로 나눠 그룹들 중 총 점수의 최솟값을 구하는 문제다. 문제 탐색하기- 문제에서 구해야 하는 최종 정답은 무엇인지 탐색한 과정- 그 정답을 구하기 위해 어떻게 코드를 구현해야 할지 고민한 과정- 문제에 들어오는 범위를 파악하며 어떤 알고리즘을 쓸 수 있을지 고민해 가는 과정ex. 가능한 시간 복잡도, 알고리즘 선택입출력 제한1 ≤ K ≤ N ≤ 100,0000 ≤ x ≤ 20 그룹으로 나눈 시험 점수의 최솟값을 매개 변수로 놓고 이분탐색 진행하면 100,000 × log (100,000)의 시간 안에 해결할 수 있다. left는 입력받은 시험 점수 중 최솟값으로 두고, ..
백준
https://www.acmicpc.net/problem/2579N개의 계단이 있고 계단마다 일정한 점수가 주어져있다. 시작 지점부터 마지막 계단까지 올랐을 때 얻을 수 있는 점수의 최댓값을 구하는 문제다. 계단을 오르는 규칙은 다음과 같다.계단은 한 번에 한 계단씩 또는 두 계단씩 오를 수 있다.연속된 세 개의 계단을 밟아서는 안 된다. 단, 시작점은 계단에 포함되지 않는다.마지막 도착 계단을 반드시 밟아야 한다. 문제 탐색하기- 문제에서 구해야 하는 최종 정답은 무엇인지 탐색한 과정- 그 정답을 구하기 위해 어떻게 코드를 구현해야 할지 고민한 과정- 문제에 들어오는 범위를 파악하며 어떤 알고리즘을 쓸 수 있을지 고민해 가는 과정ex. 가능한 시간 복잡도, 알고리즘 선택입출력 제한1 ≤ N ≤ 300계..
https://www.acmicpc.net/problem/3079상근이와 친구들 M명이 입국심사대가 N개 있는 곳에서 심사를 하려고 한다. k번 심사대에서 심사하는 데 걸리는 시간은 T_k다. 한 심사대에서는 한 사람만 심사를 할 수 있고, 초기에 모든 심사대는 비어있다.가장 앞에 서 있는 사람은 비어있는 심사대로 이동할 수 있다. 항상 이동을 해야하는 것은 아니고, 더 빠른 심사대의 심사가 끝나길 기다린 다음 그곳으로 가서 심사를 받아도 된다.이때, 상근이와 친구들이 심사를 받는데 걸리는 시간의 최솟값을 구하는 문제다. 문제 탐색하기- 문제에서 구해야 하는 최종 정답은 무엇인지 탐색한 과정- 그 정답을 구하기 위해 어떻게 코드를 구현해야 할지 고민한 과정- 문제에 들어오는 범위를 파악하며 어떤 알고리즘..
https://www.acmicpc.net/problem/2512여러 지방의 예산 요청을 심사해 국가의 예산을 분배해야 한다. 이때, 주어진 방법을 사용해 정해진 총액 이하에서 가능한 한 최대의 총 예산을 배정한다.모든 요청이 배정될 수 있는 경우, 요청한 금액을 그대로 배정모든 요청이 배정될 수 없는 경우, 특정한 정수 상한액을 계산해 그 이상인 예산 요청에는 모두 상한액을 배정상한액 이하의 예산 요청에는 요청한 금액을 그대로 배정 여러 지방의 예산 요청과 국가 예산의 총액이 주어질 때, 위의 조건을 모두 만족하도록 예산을 배정하는 문제다. 문제 탐색하기- 문제에서 구해야 하는 최종 정답은 무엇인지 탐색한 과정- 그 정답을 구하기 위해 어떻게 코드를 구현해야 할지 고민한 과정- 문제에 들어오는 범위를 ..
https://www.acmicpc.net/problem/17124정수 배열 A와 B가 있고, A는 총 n개의 서로 다른 양의 정수를 포함하고 B는 총 m개의 서로 다른 양의 정수를 포함한다. A와 B를 이용해 길이가 n인 새로운 배열 C를 만드는 문제다.C[i] = 배열 B에 있는 값 중 A[i]에 가장 가까운 값(절대값 차이가 가장 작은 값)이 조건을 만족하는 값들이 여럿 있는 경우, 그 중 가장 크기가 작은 값 문제 탐색하기- 문제에서 구해야 하는 최종 정답은 무엇인지 탐색한 과정- 그 정답을 구하기 위해 어떻게 코드를 구현해야 할지 고민한 과정- 문제에 들어오는 범위를 파악하며 어떤 알고리즘을 쓸 수 있을지 고민해 가는 과정ex. 가능한 시간 복잡도, 알고리즘 선택입출력 제한1 ≤ T ≤ 101 ..
https://www.acmicpc.net/problem/2667정사각형 그리드가 주어지고, 그리드 안에서 1은 집이 있는 곳을, 0은 집이 없는 곳을 나타낸다. 상하좌우로 연결된 집을 단지라고 정의할 때, 지도를 입력하면 단지 수와 각 단지에 속하는 집의 수를 오름차순으로 정렬해 출력하는 문제다. 문제 탐색하기- 문제에서 구해야 하는 최종 정답은 무엇인지 탐색한 과정- 그 정답을 구하기 위해 어떻게 코드를 구현해야 할지 고민한 과정- 문제에 들어오는 범위를 파악하며 어떤 알고리즘을 쓸 수 있을지 고민해 가는 과정ex. 가능한 시간 복잡도, 알고리즘 선택입출력 제한5 ≤ N ≤ 25 dfs나 bfs로 단지에 속하는 집의 수를 셀 수 있고, 단지(dfs or bfs 함수)마다 방문한 집의 개수를 초기화해야..
https://www.acmicpc.net/problem/17086N × M 크기의 공간에 아기 상어가 여러 마리 있고, 한 칸에는 아기 상어가 최대 1마리만 존재한다.어떤 칸의 안전 거리 = 그 칸과 가장 가까운 아기 상어의 거리두 칸의 거리 = 하나의 칸에서 다른 칸으로 가기 위해 지나야 하는 칸의 수이동은 인접한 8방향(대각선 포함)이 가능하고, 안전 거리가 가장 큰 칸을 구하는 문제다. 문제 탐색하기- 문제에서 구해야 하는 최종 정답은 무엇인지 탐색한 과정- 그 정답을 구하기 위해 어떻게 코드를 구현해야 할지 고민한 과정- 문제에 들어오는 범위를 파악하며 어떤 알고리즘을 쓸 수 있을지 고민해 가는 과정ex. 가능한 시간 복잡도, 알고리즘 선택입출력 제한2 ≤ N, M ≤ 500은 빈칸, 1은 아기..
https://www.acmicpc.net/problem/11123그리드 위에 양들을 '#'으로 표현했고, 그리드 위에 몇 개의 양 무리가 있는지 세는 문제다. 상하좌우로 인접한 양을 하나의 무리로 취급한다. 문제 탐색하기- 문제에서 구해야 하는 최종 정답은 무엇인지 탐색한 과정- 그 정답을 구하기 위해 어떻게 코드를 구현해야 할지 고민한 과정- 문제에 들어오는 범위를 파악하며 어떤 알고리즘을 쓸 수 있을지 고민해 가는 과정ex. 가능한 시간 복잡도, 알고리즘 선택입출력 제한0 ≤ T ≤ 1001 ≤ H, W ≤ 100 많아도 100 × 100 × 100번 안에 풀 수 있는 문제 ? 격자 안에 무리를 세는 문제는 보통 bfs로 많이 푼다. 그리드 정보를 입력 받을 때 string으로 받고 하나씩 떼어내야..
https://www.acmicpc.net/problem/2529두 종류의 부등호 기호 ''가 k개 나열된 순서열 A가 존재하고, 부등호 기호 앞 뒤에 서로 다른 한 자릿수 숫자(0~9)를 넣어 모든 부등호 관계를 만족시키는 (k+1)자리의 정수 중 최댓값과 최솟값을 찾는 문제다. 문제 탐색하기- 문제에서 구해야 하는 최종 정답은 무엇인지 탐색한 과정- 그 정답을 구하기 위해 어떻게 코드를 구현해야 할지 고민한 과정- 문제에 들어오는 범위를 파악하며 어떤 알고리즘을 쓸 수 있을지 고민해 가는 과정ex. 가능한 시간 복잡도, 알고리즘 선택입출력 제한2 ≤ k ≤ 9첫 자리가 0인 경우도 정수에 포함하고, 출력 정수는 하나의 문자열이 돼야 함 백트래킹으로 모든 (k+1)자리의 수를 구하고 조건이 맞는다면 집..
https://www.acmicpc.net/problem/22105 × 5 크기의 숫자판이 존재하고, 각 칸에는 0부터 9까지의 숫자가 적혀있다. 임의의 칸에서 시작해서, 인접한 네 방향으로 다섯 번 이동하면서 각 칸에 적힌 숫자를 붙여 6자리의 수를 만든다. 만들 수 있는 서로 다른 6자리의 수의 개수를 구하는 문제다. 문제 탐색하기- 문제에서 구해야 하는 최종 정답은 무엇인지 탐색한 과정- 그 정답을 구하기 위해 어떻게 코드를 구현해야 할지 고민한 과정- 문제에 들어오는 범위를 파악하며 어떤 알고리즘을 쓸 수 있을지 고민해 가는 과정ex. 가능한 시간 복잡도, 알고리즘 선택가능한 시간 복잡도임의의 시작 위치 선택: 5 × 5인접한 네 방향으로 다섯 번 이동: 4 × 4 × 4 × 4 × 4 dfs로 ..