
정점의 개수와 해당 정점이 이루는 그래프의 인접행렬을 입력받는다. 그래프는 가중치가 없는 방향 그래프이다. 입력받은 그래프의 관계를 바탕으로 경로의 유무를 판단하면 된다.방향 그래프인 점을 주의해야 하는데 A->B의 간선은 B->A를 의미하지 않는다.최초에는 DFS를

구간에 대한 누적 합을 구하는 문제이다. 구간에 대한 각각의 수를 입력받고 합을 구할 구간을 입력받는다. 출력으로는 테스트케이스마다의 합 결과를 보인다.예로 구간 수를 5, 4, 3, 2, 1을 입력받으면 arr5 = {5, 4, 3, 2, 1}의 형태로 저장되고 이

그래프의 간선 정보를 입력받고 연결 요소의 개수를 세는 문제이다.그래프는 모든 노드가 간선에 의해 연결될 필요가 없다. 연결 요소는 말 그대로 그래프에서 간선에 의해 연결된 노드 집합을 의미한다. 한 그래프에서는 연결 요소가 여러 개 존재할 수도 있다. 이 때, 보는

자료구조 집합에 대해서 각각의 연산을 수행하면 된다. 연산은 add, remove, check, toggle, all, empty 6가지로 문제에 나와있듯이 간단하게 처리하면 된다.최초에 집합을 나타낼 자료구조로 boolean형 배열을 선택하였다. 배열은 0부터 20까

주어진 2차원 공간에 테트로미노 도형을 배치한다. 2차원 공간에는 각각 정수가 주어지는데 이 때 테트로미노가 가지는 정수의 합의 최대를 구하는 문제이다.본 문제는 아래 포스팅을 참고하여 풀이하였다.링크텍스트2차원 공간은 임의의 수를 입력받는다. 테트로미노는 임의의 수가

메모장에는 주소와 그 주소에 해당하는 비밀번호 목록이 적혀있다. 비밀번호를 찾고 싶은 주소를 입력받으면 그에 해당하는 비밀번호를 출력하면 된다.자바 컬렉션 Map을 이용하면 쉽게 풀 수 있다. 여기서 key값이 사이트의 주소가 되고 value값이 비밀번호가 된다.map

N개의 바구니를 회전시키려고 한다. 회전시킬 바구니는 i, j, k를 입력받아 이루어지는데 i와 j는 회전시킬 바구니의 처음과 끝이고 k는 기준이 되는 바구니 번호이다.회전은 k를 기준으로 이루어지는데 단순하게 k ~ j , i ~ j-1 로 바구니로 구성하면 된다.

트리의 지름은 트리에서 임의의 두 점 사이의 거리 중 가장 긴 것을 말한다. 트리의 지름을 구하는 문제이다.정점의 개수가 주어지고 개수만큼 간선의 정보가 주어진다. 간선의 정보는 다른 정점과 해당 정점까지의 거리가 쌍으로 주어진다.가장 먼저 떠오른 방법은 무식하게 조사

뱀과 사다리 게임은 보드 내에 뱀과 사다리로 이루어진 통로(지름길)을 이용하여 최종 목적지까지 빠르게 도달하는 게임이다. 보통 사다리는 지름길, 뱀은 함정 같은 역할을 한다.문제에서는 100x100의 보드에서 사다리 게임을 진행하는데 뱀과 사다리에 대한 정보를 입력받는

2차원 공간의 지도가 주어진다. 지도는 2차원 좌표로 위치를 특정할 수 있으며 각 공간은 0, 1, 2의 값을 갖는다. 값에 대한 의미는 다음과 같다.0 : 갈 수 없는 땅1 : 갈 수 있는 땅2 : 목적지모든 공간에 대하여 목적지에 도달할 수 있는 최단거리를 구해야

방향성 없는 그래프에서 최단 경로를 구해야 한다. 단, 입력받는 특정한 2개의 노드를 무조건 지나야 한다. 출발 노드는 1, 도착 노드는 N이 된다.노드의 개수 N (2 <= N <= 800)간선의 개수 E (0 <= E <= 200,000)이전

3개의 연산이 가능한 큐가 있다. 가능한 연산은 다음과 같다.1\. 첫 번째 원소를 뽑기2\. 왼쪽으로 한 칸 이동3\. 오른쪽으로 한 칸 이동2, 3번째 연산은 한 칸 이동이지만 각각 특정 원소가 큐의 가장자리에 다시 삽입되기 때문에 회전이라고도 할 수 있다.2번째

NxM 크기의 직사각형의 각 칸에는 숫자가 있다.각 꼭짓점에 적혀 있는 수가 모두 같은 정사각형의 최대 크기를 구하면 된다.단순하게 문제에서 원하는 대로 구현하면 될 것 같다.N과 M은 50보다 작은 자연수이기 때문에 탐색에 많은 반복이 필요하지는 않을 것 같다.정사각

일정표를 보고 가능한 경우 중에서 최대 수익을 구하는 프로그램을 작성하면 된다.T는 상담소요일수, P는 금액이다. 상담은 N번째날 당일부터 시작하여 N+Tn-1 날까지 진행된다. 예시의 1일차에 상담을 시작하면 소요일수는 3일이므로 1, 2, 3일 상담을 진행하고 4일

주어진 수열의 연속된 구간 합을 구하되 최대값을 구해야 한다.누적합 알고리즘을 사용하면 쉽게 해결할 수 있다. 입력받을 때 누적합을 배열에 저장한 뒤 K에 대해 각 구간합의 크기를 비교한다.답이 될 max는 min_value로 선언했다. 왜냐하면 수열의 온도는 -, +

기름이 없는 자동차가 목적지까지 도달하려 한다. 제일 왼쪽 도시에서 출발해 목적지는 제일 오른쪽 도시이다.각 도시에서는 주유를 할 수 있고 도시마다 1리터당 가격은 다르다.그림과 같이 각 도시의 기름 가격과 거리가 주어질 때 목적지에 도달할 수 있는 가장 최소 금액을

형택이는 게임을 다시 시작한 이후에는 무조건 게임을 승리한다. 따라서, 형태이의 승률은 무조건 올라가게 되어 있는데 승률을 정수로 나타냈을때 승률이 변화하면 최소 게임 수를 구해야 한다.예를 들어, 게임 횟수 X가 53, 승리 횟수 Y가 47 이라면 승률 Z는 88이다

전체 수열에서 M개로 이루어진 부분 수열을 모두 출력하는 문제이다.N개의 수열에서 M개를 뽑아서 만들 수 있는 수열을 출력해야 하는데 수학적으로는 그냥 순열의 경우를 구하면 된다.하지만 문제의 조건으로 수열은 사전순으로 증가하는 순서로 출력해야 한다.따라서, 우선 프로

주어진 수열의 부분 수열 중에서 증가하는 수열을 만들고 그 중에서 가장 긴 수열의 길이를 구해야 한다.증가하는 부분 수열의 모든 경우를 구하는 것은 쉽지 않다. 따라서, 이 문제를 dp로 접근해보았다.입력받은 수열의 크기만큼 dp 배열을 만들어 결과를 저장해보았다. 배

주어진 수열의 부분 수열 중에서 증가하는 수열을 만들고 그 중에서 가장 긴 수열의 길이를 구해야 한다.증가하는 부분 수열의 모든 경우를 구하는 것은 쉽지 않다. 따라서, 이 문제를 dp로 접근해보았다.입력받은 수열의 크기만큼 dp 배열을 만들어 결과를 저장해보았다. 배

N개의 잔에 서로 다른 양의 포도주가 담겨 있다. 효주는 최대한 많은 포도주를 마실려고 한다.포도주를 마시는 규칙은 다음과 같다.1\. 선택한 잔에 담긴 포도주는 모두 마셔야 하고 제자리에 놓는다.2\. 붙어있는 세 잔의 포도주는 마실 수 없다.마실 수 있는 포도주의

그림과 같은 정수 삼각형이 주어지고 최상단 노드부터 아래로 내려간다. 가능한 경로 중에서 수의 합이 최대가 될 때의 합을 구한다.예시의 경우, 7 - 3 - 8 - 7 - 5 = 30이 출력된다.처음에는 단순하게 최대가 되는 경우를 탐색하기로 했다. dfs를 통해 모든

계단수는 인접 자리의 수가 1씩 차이나는 수이다.자리수를 N이라고 할 때N=1이면, (1, 2, 3, 4, 5, 6, 7, 8, 9)N=2이면, (10, 12, 21, 23, 32, 34, 43, 45, 54, 56, 65, 67, 76, 78, 87, 89, 98).

입력으로는 수열과 사용할 수 있는 연산자의 개수가 주어진다.N개의 수열을 입력받으면 N-1개의 연산자를 입력받는다. 각 연산자는 수열의 수 사이에 들어가서 식을 완성한다.완성된 식은 연산자 우선 순위를 무시하고 연산한다. 따라서, 식에 \* 연산이 있더라도 다른 연산자

짝수 명의 사람들을 두 팀으로 나누려고 한다. 최대한 비슷한 전력으로 팀을 나누기 위해 아래와 같은 표를 사용한다.팀의 전력은 개인의 능력의 합이 아닌 서로가 팀이 됐을 때의 능력치의 합으로 계산한다.위의 표에서 i와 j는 각 선수를 의미하고 같은 팀이 됐을 때의 능력

트리의 순회 방식 (prefix, infix, postfix)에 따라 알맞게 이진트리를 출력하면 된다.이 문제는 입력이 독특한데 입력은 노드의 개수만큼 줄이 입력된다.각 줄은 노드의 이름, 그리고 2개 존재할 수 있는 좌우 자식 노드 정보가 담겨있다.자식 노드가 없는

2차원 배열 공간은 건물의 높이를 의미한다. 장마철에 비가 잠기지 않는 영역의 최대 개수를 계산해야 한다.비에 잠기는 기준은 건물의 높이가 비의 높이 이하인 경우이다.위 경우는 비의 높이가 4인 경우이다. 안전 영역은 상,하,좌,우 공간이 연속된 모든 영역을 1개로 취

어제 풀었던 안전 영역 (문제 번호: 2468) 과 같은 문제이다.검은 타일은 땅을 의미하고 흰 타일은 바다를 의미한다.지도가 주어졌을 때 섬의 개수를 세면 된다.섬은 가로, 세로, 대각선으로 연결되어 있는 땅을 의미한다.풀이 방법은 안전 영영과 같이 각 테스트 케이스

주어진 수열에서 전체 합이 S가 되는 부분 수열의 개수를 출력하면 된다.문제를 풀 때 부분 수열이 정확히 무엇인지 몰랐다.수열은 수의 순서가 있기 때문에 부분 수열은 기존 수열에서 순서를 유지한 채로 연속된 수열인지 알았다.그래서 처음에는 누적합을 이용해 문제를 풀었었

트리의 노드의 개수는 N개이며 입력으로는 N-1개의 간선이 주어진다. 간선은 방향이 없으며 이어진 두 정점이 주어진다.정점을 입력받아 각 노드의 부모 노드를 출력하면 된다. (1은 항상 루트 노드이다.)결국 모든 노드의 부모 노드를 알기 위해서는 각 노드를 탐색할 필요

2 x N 으로 이루어진 공간 안에 스티커의 점수가 저장되어 있다. 이 때, 각 스티커를 선택하고자 한다.하나의 스티커를 선택하면 선택된 스티커의 상하좌우 인접한 스티커는 선택할 수 없다.위와 같은 규칙으로 스티커를 선택할 때 스티커 집합의 점수 합의 최댓값을 출력한다

간단한 문제이다. 2147483647 이하의 자연수 A, B, C가 주어진다.A를 B번 곱한 수를 C로 나는 나머지를 출력한다.문제의 쟁점은 두 가지이다. 첫째는 계산과정에서 int 범위에 벗어날 수 있다는 것이고, 둘째는 연산횟수인 B가 최댓값일때 시간초과가 발생할

49이하의 자연수 중에서 k개의 수를 뽑아 이중에서 6개의 수로 조합가능한 경우를 모두 출력하는 문제이다.간단하게 조합의 경우를 출력하는 문제이다. 조합식 kC6의 개수를 출력하면 된다.조합의 경우에는 단순 bfs로 해결할 수 있다.단, 조합은 순서를 생각하지 않기 때

그래프 상에서 나이트가 이동한다. 나이트는 위의 문제와 같이 이동할 수 있다.IxI의 그래프에서 나이트가 시작점에서 도착점까지 이동할 수 있는 최소 이동횟수를 출력해야 한다.최소 이동 횟수와 같은 최단거리는 BFS로 해결할 수 있다.BFS의 depth를 이동횟수라고 하

간단한 문자열 에디터를 구현해야 한다.문자열을 조작하는 명령어는 현재 문자열 상에서 위치하는 커서를 기준으로 수행된다.커서는 현재 문자열의 위치를 나타내며 이를 통해 삭제, 삽입을 수행한다.구현해야 하는 명령어는 다음과 같다.최초에 커서는 문자열의 가장 뒤쪽에 위치하고

NxN 크기의 표에 숫자가 각각 공간에 채워져 있다.표 상에서 두 점의 좌표를 입력받고 해당 좌표의 구간 합을 구해야 한다.좌표는 (x1, y1) (x2, y2)로 주어지며 x1과 y1은 각각 x2, y2보다 작거나 같다.위 그림은 (2, 2) ~ (3, 4)까지의 구

오르막 수는 수의 각 자릿수가 오름차순을 이루는 수를 의미한다. 단, 인접수가 같아도 오름차순으로 친다.예를 들어, 1234, 1134, 6689는 오르막 수이고 4251, 5274, 8764는 오르막 수가 아니다.자릿수 N이 주어질 때, 오르막 수의 개수를 출력하면

MxN 크기의 모눈종이에 입력받은 사각형을 색칠한다.색칠된 사각형으로 분리된 각 영역의 개수와 크기를 출력한다.좌표상의 특정 영역 넓이를 구하는 방법으로는 BFS가 있다.우선, 입력받은 사각형을 평면상에 색칠해야 한다.평면은 boolean 2차원 배열을 이용해서 색칠된

일반적으로 우리 나라의 가족 관계에 사용되는 촌 수를 계산하려고 한다.촌 수는 부모 자식 관계를 기준으로 계산된다.입력으로는 전체 사람의 수가 주어지고 촌 수를 계산해야 할 두 사람의 번호가 주어진다.다음으로는 위 두 사람이 포함되어 있는 가족의 관계를 입력받는다.M줄

주어진 수열에서 합이 가장 큰 증가하는 부분 수열의 합을 출력해야 한다.위의 예와 같이 수열 A = {1, 100, 2, 50, 60, 3, 5, 6, 7, 8} 에서의 합이 가장 큰 부분 수열은{1, 2, 50, 60} 으로 합은 113이다.증가하는 부분 수열의 기준

N개의 지방이 존재하는데 각 지방에 따라 필요한 예산이 정해져 있다.국가가 지방들에게 예산을 분배하려고 한다. 총 예산은 한정되어 있다.각 지방에게 최대한 많은 예산을 분배하려고 할 때 다음과 같은 분배 규칙을 따른다.모든 요청이 배정될 수 있는 경우에는 요청한 금액을

방향 그래프 상에서 입력된 시작점에서 다른 정점까지의 최단거리를 구한다.단, 그래프 상에서 서로 다른 정점 사이에는 여러 개의 간선이 존재할 수 있다.경로가 존재하지 않는 경우에는 INF를 출력한다.방향그래프의 최단 경로를 구하는 문제이다. 문제처럼 거리의 가중치가 있

N개의 지점과 지점 사이를 잇는 M개의 도로와 W개의 웜홀이 존재한다.도로는 양방향 이동이 가능하고 웜홀은 단방향으로만 이동이 가능하다.도로를 통해서 이동할 때는 당연하게도 시간이 가지만 웜홀을 통해 이동한다면 시간이 뒤로 가게 된다.위와 같은 (무방향과 방향이 섞인)

N개의 도시와 M개의 버스가 있다. 버스는 서로 다른 출발점과 도착점을 입력된 비용으로 간다.우리가 목표로 하는 출발점과 도착점을 입력받았을 때 버스 비용이 최소일 때의 값을 구하여라.이전에 풀었던 그래프 문제에 비하면 굉장히 직관적인 문제이다.N개의 도시는 정점, M

후위 표기식은 일반적인 중위 표기식과 다르게 연산자가 피연산자들의 뒤에 붙는 표기식이다.문제에서는 후위 표기식으로 변환하려면 우선순위에 따라 괄호로 묶어준 뒤 괄호의 순서대로 연산자를 괄호 바깥으로 꺼내 식을 작성한다고 설명한다.중위 표기식으로 되어있는 식을 입력받아

트리의 지름은 트리에 존재하는 모든 경로들 중에서 가장 긴 것의 길이를 말한다.가중치가 있는 트리를 입력받고 트리의 지름을 구하여라.처음에는 트리의 지름을 다르게 생각했다.트리의 모양에서 트리의 지름을 가지는 노드는 공통 조상을 기준으로 생각할 수 있기 때문에 한 노드

알파벳이 적혀있는 RxC 크기의 보드가 있다.1행1열부터 시작하여 말을 이동하려 한다.말은 상하좌우로만 이동할 수 있지만 새로 이동한 칸의 알파벳은 이전에 밟은 적 없는 알파벳이어야 한다.최대로 밟을 수 있는 칸 수를 구하여라.쉬운 백트래킹 문제이다.특정한 칸에서 움직

Nx3 보드의 각 칸에는 숫자가 적혀 있다. 보드에서 내려가기 게임을 하려고 한다.내려가기 게임의 규칙은 단순하다. 현재 위치에서 다음 행의 칸으로 내려가되 현재 열과 인접한 칸만 가능하다.예를 들어 1열에 있다면 다음 칸에는 0열, 1열, 2열 모두 가능하지만 0열에

0과 1로 이루어진 NxM의 보드가 있다.0은 이동가능함을 의미하고 1은 벽으로 이동이 불가능하다.상하좌우로 움직일 수 있는 말을 (1, 1)에서 (N, M)까지 이동하려 할 때 최소이동거리를 구하여라.단, 벽은 단 한 번 부술 수 있다.처음에는 단순 BFS를 생각했다

N은 3x2k 수이며 k는 10보다 작거나 같은 정수이다.N이 입력됐을 때 다음과 같은 별을 출력하라.별 찍기 문제는 대부분 재귀를 통해 풀이하여야 한다.출력된 별의 규칙을 파악해보자.표시된 삼각형은 각각 N=3, 6, 12 일 때의 출력 모양이다. 물론 24일때는 전

NxM 크기의 모눈종이 위에 치즈가 놓여져 있다. 주어진 격자에는 3가지 유형의 칸이 존재한다.3가지 유형으로는 치즈, 치즈 바깥, 치즈 안이 있다.치즈는 시간이 지날 때마다 사라지는데 사라지는 조건은 다음과 같다.치즈는 격자의 4면중 2면 이상이 바깥 공기와 접촉하면

이진 검색 트리는 부모 노드를 기준으로 왼쪽 서브 트리는 모두 부모 노드보다 작고 오른쪽 서브 트리는 모두 부모 노드보다 큰 트리이다.이러한 이진 검색 트리를 전위 순회한 결과를 입력받아 후위 순회한 결과로 출력하라.문제는 2단계로 구성된다.첫번째는 전위 순회한 입력값

LCS는 최장 공통 부분 수열의 약자이다. 다시 말해 두 수열이 주어졌을 때 양쪽의 공통 부분 수열 중에서 가장 긴 것을 찾으면 된다.가장 긴 LCS의 길이를 출력하자.LCS 문제는 따로 위키백과에 있을 정도로 유명한 문제인 것 같다.처음에 문제를 봤을 때 전혀 감이

목표 금액인 K를 맞추기 위해 N개의 동전이 주어진다.N개의 동전은 각각 가치가 다르다.주어진 동전을 활용하여 K원이 되는 동전 조합의 경우의 수를 구하여라.DP 문제가 생각하기 어려운 것 같다..처음에 감이 도저히 잡히지 않아서 이것저것 시도해보았다.동전 중 하나만

입력으로 기본 문자열과 폭발 문자열이 주어진다.폭발 문자열은 기본 문자열에 포함될 수 있으며 폭발할 수 있다.폭발했을 때 폭발 문자열은 그 자리에서 사라지고 남은 문자열이 다시 합쳐진다.합쳐지는 과정에서 다시 폭발 문자열이 포함되어 있을 수도 있다.이러한 과정을 폭발

바이토닉 수열은 문제처럼 S1 < S2 < ... Sk-1 < Sk > Sk+1 > ... SN-1 > SN 을 만족하는 수열을 의미한다.다시말해 기준이 되는 정점까지는 오름차순으로 정렬되고 정점을 지난 뒤에는 내림차순으로 정렬된 수열이다.수열이 주어졌

n이 최대 1,000,000,000,000,000,000 일 때 n번째 피보나치 수를 구하여라.피보나치 수를 구하는 문제는 전형적인 다이나믹 프로그래밍 문제이다.기본적으로 피보나치 수는 fiboi = fiboi-1 + fiboi-2 의 점화식을 따르기 때문에 간단하게

n개의 도시에 m개의 버스가 있다. 버스는 한 도시에서 출발하여 다른 도시에 도착한다.버스의 비용은 각각 다르다.출발 도시와 도착 도시가 주어질 때 이동할 때 드는 최소 비용과 거치는 도시의 개수, 그리고 경로까지 출력하라.경로의 최소비용을 구하는 문제는 데이크스트라의

0 ~ 100,000 위치에 수빈이와 동생이 위치해있다.수빈이가 동생을 찾으려고 한다.수빈이는 1초 동안 걷거나 순간이동할 수 있다.걷는 경우 한 칸을 이동하기 때문에 현위치에서 +1, -1로 이동한다.순간이동은 현 위칭서 x2의 위치에 이동한다.수빈이가 동생을 찾는

NxN 2차원 평면에 최초 K개의 문명이 존재한다. 문명은 1년이 지날때마다 인접한 칸으로 전파된다. 문명은 서로 결합될 수 있는데 서로 다른 문명이 인접한 칸에 위치할 때 가능하다.Untitled왼쪽 상단의 그림은 초기의 문명 상태이다. 1년이 지나면 오른쪽 상단처럼

7453 합이 0인 네 정수같은 크기의 4개의 배열 중에서 숫자 한 개씩을 뽑아 합이 0이 되는 경우를 세면 되는 문제입니다. 문제의 특이점이라면 시간제한이 12초, 메모리 제한이 1024MB로 굉장히 널널한 제한 조건을 가집니다.배열이 주어지고 배열에서 숫자를 뽑아

14658 하늘에서 별똥별....NxM의 격자판에 최대 100개의 별이 존재합니다. LxL 크기의 트램펄린을 놓아 최대 많은 별을 날려버려야 합니다. 다시말해, 격자판에 존재하는 별을 트램펄린을 통해 최대한 많이 덮어야 하는 문제입니다.문제의 요점은 최대인 경우를 어떻
문제 이해 A, B, C 그룹에 돌의 개수가 주어집니다. 각 그룹에는 최대 500개가 주어질 수 있습니다. 각 그룹에 대해 연산을 수행합니다. 연산 과정은 다음과 같습니다.. > 크기가 같지 않은 두 그룹을 선택한다. 두 그룹의 크기를 비교하여 큰 그룹에서 작은 그
2933 미네랄 이해 격자판에 미네랄이 존재합니다. 미네랄은 클러스터 단위로 구분할 수 있습니다. 이 때의 클러스터는 서로 인접한 미네랄의 집합입니다. 다시 말해, 떨어진 미네랄 집합끼리는 별개의 클러스터라고 할 수 있습니다. 주어진 격자판에 대해 입력만큼 막

https://www.acmicpc.net/problem/9376NxM 격자판에 벽, 문, 탈옥수 2명이 있습니다. 상근이는 격자판의 문을 열어 탈옥수 2명을 모두 탈출시키려고 합니다.모두 탈출하기 위해 열어야하는 문의 최솟값을 구하면 되겠습니다.격자판, 최솟

임의의 히스토그램에서 만들 수 있는 직사각형 중에 가장 큰 값을 출력하면 됩니다.가장 먼저 n의 범위가 눈에 들어왔습니다. n은 최대 10만이기 때문에 시간복잡도 N^2으로는 불가능합니다. 시간복잡도는 NlogN 혹은 N으로 줄이는 것이 문제의 핵심입니다.히스토그램에서

레이저끼리 통신하기 위해 필요한 거울의 최소 개수를 구하시면 됩니다.거울은 레이저의 진행 방향을 90도 바꿀 수 있습니다. 이를 통해 레이저끼리 연결해야 합니다. 일반적으로 격자에서 한 점과 다른 점이 만나는 경우에는 최소 거리를 BFS로 구합니다. 하지만 본 문제의

N개의 파일에서 2개씩 파일을 합칠 수 있습니다. 합치는 데 필요한 비용은 각 파일의 크기입니다. 모든 파일을 합칠 때 필요한 최소 비용을 구해야 합니다.예를 들어, 예제 1의 경우에는1\. (40 + 30) , (30 + 50) -> 1502\. 70 + 80 ->

N개의 파일에서 2개씩 파일을 합칠 수 있습니다. 합치는 데 필요한 비용은 각 파일의 크기입니다. 모든 파일을 합칠 때 필요한 최소 비용을 구해야 합니다.예를 들어, 예제 1의 경우에는1\. (40 + 30) , (30 + 50) -> 1502\. 70 + 80 ->

행렬끼리 곱셈을 하기 위해선 각 행렬의 열과 행 (혹은 행과 열)이 같아야 합니다.NxM 행렬, MxK 행렬이 있다면 행렬의 곱셈 연산의 횟수는 NxMxK가 됩니다.행과 열의 개수가 주어진 행렬 N개가 주어질 때, 곱셈 연산 횟수의 최솟값을 구하면 됩니다.단, 행렬의

격자판에 로봇 청소기가 있습니다. 로봇 청소기는 격자판에 주어진 더러운 칸에 방문하여 모든 곳을 청소해야 합니다. 단, 로봇 청소기는 가구가 있는 곳은 통과하지 못합니다.격자판에 더러운 곳을 모두 깨끗하게 만들려고 할 때 이동 횟수의 최솟값을 출력하세요.일단 격자판에서

문제 이해 N개의 앱이 주어집니다. N개의 앱은 각자 필요한 메모리 정보와 비활성 시 필요한 비용 정보가 있습니다. 필요한 메모리 M 바이트를 확보하기 위해 N개의 앱 중에서 비활성해야 합니다. M 바이트를 확보하기 위한 최소의 비용을 출력해야 합니다. 접근 가장

N 크기의 수열이 주어지고 해당 수열의 S에서 M까지의 수가 팰린드롬인지 구하는 문제입니다.N은 최대 2000, M은 최대 1000000입니다.팰린드롬은 중간을 기준으로 좌우 대칭인 수 또는 문자열을 말합니다. 예를 들어, (1, 2, 1), (1, 2, 3, 2, 1

정수 N이 있고 M은 N의 자릿수입니다.N은 최대 1,000,000이기 때문에 M은 최대 7이 됩니다.K를 입력받고 다음의 연산을 K번 수행합니다.1 ≤ i < j ≤ M인 i와 j를 고른다. 그 다음, i번 위치의 숫자와 j번 위치의 숫자를 바꾼다. 이때, 바꾼

NxN 배열에서 (1,1) -> (N,N) 까지 이동하려고 합니다. 이동은 상,하,좌,우로만 할 수 있습니다. 이동하기 위해 거쳐 간 수 중에서 최댓값, 최솟값의 차이가 가장 작아지는 경우의 값을 출력하면 됩니다.본 문제 같은 경우 웬만하면 그리디가 아닌 탐색쪽으로 접

버스는 단방향 간선을 의미합니다.버스가 이동할때 그냥 이동, 순간이동, 시간을 되돌아가기를 할 수 있습니다. 각각의 시간 가중치는 양수, 0, 음수를 의미하기도 합니다.1번 도시에서 다른 도시까지의 최단거리를 구합니다. 도달할 수 없는 경우 -1로 출력합니다. 단, 시

M -> Z 까지 향하는 가스관이 있습니다. 가스는 각 블록의 모양대로 진행합니다.입력으로는 가스관을 하나 제거한 상태로 주어집니다.제거된 가스관의 위치와 원래의 모양을 출력하면 됩니다.단, 입력으로 주어지는 보드에서 M, Z가 하나의 블록과 이어져 있는 경우만 주어집

N개의 공항, M의 총 비용, K의 티켓 수가 주어집니다.티켓은 출발 공항 u, 도착 공항 v, 비용 c, 소요시간 d로 이루어집니다.찬민이는 1에서 출발하여 N에 도착해야합니다. 총 비용 이내로 도착해야 할 때 최단시간을 출력하고 도착할 수 없는 경우에는 Poor K

격자 정보는 다음과 같습니다.'> '.' : 빈 공간'!' : 거울이 설치될 수 있는 공간'\*' : 벽거울을 설치할 때는 항상 45도 대각선 방향으로 설치할 수 있습니다. 이 말은 빛의 진행방향을 바꾼다는 의미이기도 합니다.우리는 거울을 설치하여 문에서 문까지 볼 수

\*\* BFS8x8 체스판이 주어집니다. 체스판의 가장 왼쪽 아랫 칸에 캐릭터가 위치하고 캐릭터는 가장 오른쪽 윗칸으로 이동해야 합니다.체스판에는 벽이 있는데 이 벽은 1초마다 한 칸씩 아랫 행으로 내려갑니다. 캐릭터는 벽에 있는 곳에 갈 수도 없지만 캐릭터가 있는

아주 유명한 TSP 외판원 순회 문제입니다.외판원은 어느 한 도시에서 출발하여 모든 도시를 거쳐서 다시 출발점으로 돌아와야 합니다. 돌아올 수 있는 경우 중 가장 적은 비용를 구하면 됩니다.외판원 순회를 완전탐색으로도 풀 수 있지만 시간복잡도가 충분치 않습니다. N의

https://www.acmicpc.net/problem/11497통나무 N개의 높이가 주어진다. 각 통나무를 건너뛰는 게임을 진행하려한다. 게임은 통나무를 원형으로 구성하고 각 통나무를 뛰어넘는 것이 규칙이다. 게임의 난이도는 다음과 같이 결정된다. 통나무를

https://www.acmicpc.net/problem/21701차원 좌표계 상에서 선을 긋는다. 선은 같은 곳을 여러 번 그을 수 있지만 1차원 좌표계이기 때문에 한 번 그은 곳과 차이는 구별할 수 없다.즉, (1, 3), (2, 4)를 그었을 때 선은 (

https://www.acmicpc.net/problem/2042최대 1,000,000개 N만큼의 수열이 주어진다. 수열에 대해서 2가지 쿼리가 필요하다.숫자 변경 (1 <= M <= 10,000)특정 위치의 수열의 숫자를 변경한다.구간 합 구하기

https://www.acmicpc.net/problem/10158격자상의 개미는 초기에 오른쪽 위 45도로 이동한다. 경계면에 부딪히면 반사되어 다른 방향으로 이동한다.격자 크기와 개미의 초기 위치, 진행 시간이 주어질 때 개미의 최종 위치를 출력해야 한다.

https://www.acmicpc.net/problem/22612차원 평면 상의 n개의 점이 주어질 때 가장 가까운 두 점의 거리를 구하여라.문제는 단순하다. n개의 점을 조합하여 가장 가까운 두 점의 거리를 구하면 된다. 브루트 포스 방법을 생각해보자. n

https://www.acmicpc.net/problem/1744주어진 수열에 대해서 전체 합을 구해야 한다. 단, 수 2개를 하나로 묶을 수 있다. 묶은 수들은 서로를 곱해서 새로운 값으로 치환할 수 있다.위치 상관없이 2개의 수를 묶을 때 사용할 수 있다.

https://www.acmicpc.net/problem/1034직사각형 보드의 각 셀에는 램프가 있다. 각 램프의 상태는 켜지고 꺼진 상태가 존재한다. 램프는 보드의 각 열 아래에 있는 스위치로 조작할 수 있다. 단, 스위치는 위치한 열의 모든 램프를 끄고

https://www.acmicpc.net/problem/2357최대 100,000개의 정수들이 주어질 때 (a, b) 범위에 해당하는 수들 중에서 최댓값과 최솟값을 찾아야 한다.단, 입력으로 주어지는 쿼리는 M개로 최대 100,000개이다.완전 탐색으로 접근

https://www.acmicpc.net/problem/10216적군의 기지는 2차원 평면 상에 있으며 위치 정보와 반지름 정보가 주어진다. (x, y, r)적군의 기지는 반지름만큼 통신범위를 가지고 만일 각 기지가 통신범위 안에 포함되면 서로 통신할 수 있

https://www.acmicpc.net/problem/17082차원 평면 상의 N개의 점이 주어질 때 볼록한 다각형을 만들어야 한다. 볼록한 다각형의 정의는 모든 내각이 180도 이하인 다각형이다.문제를 단순하게 이해하자면 N개의 점 중에서 몇 개를 뽑아

https://www.acmicpc.net/problem/13460NxM 보드에는 빨간색, 파란색 구슬이 1개씩 있다. 보드를 기울여 구슬을 굴릴 수 있다. 왼쪽으로 기울면 모든 구슬이 왼쪽 끝으로 간다.보드에는 구멍이 1개가 있다. 게임의 목적은 구슬을 굴려