문제 설명다섯 개의 정수 n, k1, k2, w, b가 주어진다고 가정해 봅시다. 2×n 크기의 보드가 있으며, 첫 번째 행의 앞 k1개 셀과 두 번째 행의 앞 k2개 셀은 흰색으로 칠해져 있고, 나머지 셀은 모두 검은색입니다.우리는 흰색 도미노 w개와 검은색 도미노 b개(각각 2×1 크기)를 가지고 있습니다.흰색 도미노는 덮으려는 두 셀이 모두 흰색이고, 다른 도미노가 이미 놓여 있지 않은 경우에만 배치할 수 있습니다.검은색 도미노 역시 두 셀이 모두 검은색이고 비어 있어야 배치할 수 있습니다.도미노는 가로 또는 세로 어느 방향으
문제 설명다섯 개의 정수 b, p, f, h, c가 주어진다고 가정해 봅시다. 어느 식당에서는 햄버거와 치킨버거, 두 가지 종류의 버거를 판매합니다. 햄버거를 만들려면 빵 2개와 소고기 패티 1개가 필요하고, 치킨버거를 만들려면 빵 2개와 닭고기 커틀릿 1개가 필요합니다. 현재 보유한 재료는 빵 b개, 소고기 패티 p개, 닭고기 커틀릿 f개이며, 햄버거는 h루피에, 치킨버거는 c루피에 판매할 수 있습니다. 이때 얻을 수 있는 최대 이익을 구하는 것이 목표입니다.예시입력이 b = 7, p = 5, f = 2, h = 10, c = 1
문제 설명 n개의 원소로 이루어진 배열 A가 있다고 가정해 보겠습니다. 한 번의 연산으로 배열에 있는 임의의 원소 하나에 1을 더할 수 있습니다. 만약 배열 전체 원소의 합 또는 곱이 0이라면, 두 값이 모두 0이 아니게 될 때까지 연산을 반복해야 합니다. 이때 필요한 최소 연산 횟수를 구하는 것이 이 문제의 목표입니다. 예시 입력이 A = [-1, 0, 0, 1]일 때 정답은 2입니다. 현재 배열의 곱과 합이 모두 0이기 때문입니다. 값이 0인 두 번째와 세 번째 원소에 각각 1을 더하면 배열은 [-1, 1, 1, 1]이 되며,
n개의 요소를 가진 배열 A와 세 값 l, r, k가 주어진다고 가정해 보겠습니다. Amal은 초콜릿을 구매하고 싶지만, 너무 비싼 초콜릿도 너무 저렴한 초콜릿도 사지 않으려 합니다. 가게에는 n개의 서로 다른 초콜릿 바가 있으며, 각각의 가격은 배열 A에 담겨 있습니다. 가격이 r보다 크면 너무 비싼 것이고, l보다 작으면 너무 저렴한 것으로 간주합니다. 또한 그는 최대 k루피까지만 지출할 수 있습니다. 이때 Amal이 구매할 수 있는 초콜릿의 최대 개수를 구하는 것이 우리의 과제입니다.예를 들어 입력이 A = [1, 2, 3,
문제 이해하기두 개의 숫자 r, c와 n × m 크기의 격자(grid)가 주어집니다. 격자의 일부 셀은 검정색(B)이고, 나머지는 흰색(W)입니다. 한 번의 연산에서는 검정색 셀을 하나 선택한 뒤, 다음 두 가지 동작 중 정확히 하나를 수행할 수 있습니다.선택한 셀이 속한 행 전체를 검정색으로 칠하기선택한 셀이 속한 열 전체를 검정색으로 칠하기목표는 r행 c열 위치의 셀을 검정색으로 만드는 데 필요한 최소 연산 횟수를 구하는 것이며, 불가능한 경우에는 -1을 반환해야 합니다.예시다음과 같은 입력이 주어졌다고 가정해 보겠습니다.WBW
문제 설명n개의 요소를 가진 배열 A와 값 c가 주어졌다고 가정해 보겠습니다. 우리 시스템에는 미친 워드 프로세서가 설치되어 있는데, 이 프로세서는 문자를 자유롭게 입력할 수 있지만 연속으로 c초 동안 아무것도 입력하지 않으면 지금까지 작성한 모든 글자가 화면에서 사라집니다. 배열의 각 요소 A[i]는 i번째 문자를 입력한 시각(초)을 의미합니다.우리의 목표는 n개의 문자를 모두 입력한 후, 화면에 최종적으로 남아 있는 문자의 개수를 구하는 것입니다.입력 예시A = [1, 3, 8, 14, 19, 20], c = 5인 경우를 살펴보
문제 개요 N개의 원소를 가진 배열 A와 숫자 T가 주어졌다고 가정해 봅시다. Amal은 프로그래밍 대회에 참가하려고 하는데, 대회는 총 T분 동안 진행되며 N개의 문제가 출제됩니다. i번째 문제를 푸는 데는 A[i]분이 걸립니다. 그는 N개의 문제 중 원하는 만큼(0개 이상) 골라서 풀되, 선택한 문제들을 푸는 데 걸리는 총 시간이 T분을 넘지 않도록 해야 합니다. 우리가 구해야 할 것은 그가 고른 문제들을 해결하는 데 걸릴 수 있는 가장 긴 시간입니다. 예를 들어 입력이 T = 17, A = [2, 3, 5, 7, 11]이라면
문제 개요숫자로만 이루어진 문자열 S와 하나의 정수 M이 주어졌다고 가정해 봅시다. S에서 가장 큰 자릿수를 d라고 할 때, d+1 이상의 정수 n을 밑(base)으로 선택하여 S를 n진법 수로 해석했을 때, 그 결과값이 M보다 크지 않은 경우가 총 몇 가지인지 구하는 것이 이 문제의 목표입니다.예를 들어 S = 999, M = 1500이라고 하겠습니다. S를 10진수로 해석하면 999, 11진수로 해석하면 1197, 12진수로 해석하면 1413이 됩니다. 이 세 값이 바로 M(=1500) 이하가 되는 유일한 경우이므로, 정답은 3
문제 개요숫자 N이 주어졌다고 가정해 봅시다. 양의 정수 x에 대해 정의되는 함수 gcdSum(x)은 그 정수 자신과 자릿수 합의 최대공약수(gcd)를 의미합니다. 우리가 구해야 할 것은 gcdSum(x) > 1을 만족하는 가장 작은 정수 x(x ≥ n)입니다.예를 들어 입력이 N = 31이라면 출력은 33이 됩니다. 31과 자릿수 합 (3+1)=4의 최대공약수는 1이고, 32와 (3+2)=5의 최대공약수 역시 1입니다. 하지만 33과 (3+3)=6의 최대공약수는 3으로 1보다 크기 때문에 조건을 만족하는 첫 번째 수는 33이
문제 소개각각 N개의 원소를 가진 두 배열 A와 B가 주어졌다고 가정해 봅시다. Amal과 Bimal은 셀 번호가 1부터 N까지 매겨진 보드 위에서 게임을 진행합니다. 보드에는 N-1개의 도로가 있으며, i번째 도로는 A[i]번 셀과 B[i]번 셀을 연결합니다. 어떤 셀이든 인접한 셀로 이동하는 과정을 반복하면 다른 모든 셀에 도달할 수 있습니다.게임 시작 시 셀 1은 검은색으로, 셀 N은 흰색으로 칠해져 있고, 나머지 셀들은 아직 색칠되지 않은 상태입니다. Amal이 선공이며, 두 사람은 번갈아 가며 차례를 진행합니다. Amal은
문제 설명 두 개의 정수 N과 K가 주어집니다. N개의 정점을 가진 무방향 그래프를 구성해야 하며, 이 그래프는 다음 조건들을 모두 만족해야 합니다. 그래프는 단순(simple) 그래프이면서 연결(connected)되어 있어야 합니다. 정점에는 1부터 N까지 번호가 매겨집니다. 그래프의 간선 개수를 M이라 할 때, 간선에는 1부터 M까지 번호가 붙으며 각 간선의 길이는 1입니다. i번째 간선은 정점 U[i]와 V[i]를 연결합니다. i < j를 만족하는 정점 쌍 (i, j) 중에서 두 정점 사이의 최단 거리가 정확히 2인 쌍
두 개의 수 l과 r이 주어졌을 때, l 이상 r 이하 범위 안에 있으면서 모든 자릿수가 서로 다른 정수 x를 찾는 문제입니다.예를 들어 입력이 l = 211, r = 230이라면, 출력은 213이 됩니다. 211은 1이 두 번 나타나므로 조건을 만족하지 않지만, 213은 세 자릿수(2, 1, 3)가 모두 고유하기 때문입니다.문제 해결 접근 방식이 문제는 브루트포스(brute-force) 방식으로 간단하게 해결할 수 있습니다.l부터 r까지 모든 수를 하나씩 차례대로 확인합니다.각 수를 문자열로 변환한 뒤, 각 자릿수를 집합(set)
문제 개요x축 위에 두 개의 구간이 있다고 가정해 보겠습니다. 첫 번째 구간은 (l1, r1), 두 번째 구간은 (l2, r2)로 표현되며, 각각 l1 < r1과 l2 < r2 조건을 만족합니다. 이 두 선분은 서로 교차할 수도, 일부만 겹칠 수도 있고, 완전히 일치하는 경우도 있습니다.목표는 다음 조건을 모두 만족하는 두 수 a와 b를 찾는 것입니다.a는 구간 (l1, r1) 안에 속해야 합니다.b는 구간 (l2, r2) 안에 속해야 합니다.a와 b는 서로 달라야 합니다.예를 들어 입력이 l1 = 2, r1 = 6, l
문제 개요 세 개의 정수 N, M, K가 주어진 상황을 생각해 봅시다. N개의 블록이 한 줄로 나열되어 있으며, 다음 두 가지 조건에 따라 블록을 칠하는 방법의 수를 구하려고 합니다. 두 가지 칠하기 결과는 블록들의 색상 배치가 서로 다를 때에만 다른 것으로 간주됩니다. 각 블록에는 M가지 색상 중 하나를 골라 칠합니다. (모든 색상을 반드시 사용할 필요는 없습니다) 같은 색으로 칠해진 인접한 블록 쌍은 최대 K쌍까지만 존재할 수 있습니다. 답이 너무 커질 수 있으므로, 결과는 998244353으로 나눈 나머지를 반환합니다. 예
문제 이해하기 4개의 요소를 가진 배열 A가 있다고 가정해 보겠습니다. 사탕 가방이 총 4개 있으며, i번째 가방에는 A[i]개의 사탕이 들어 있습니다. 우리는 이 가방들을 두 친구에게 나누어 주려고 하는데, 이때 각 친구가 받는 사탕의 총 개수가 같아지도록 배분할 수 있을지 확인해야 합니다. 예를 들어 입력이 A = [1, 7, 11, 5]라고 해보겠습니다. 이 경우 출력은 True(참)입니다. 첫 번째와 세 번째 가방(1 + 11 = 12)을 한 친구에게, 두 번째와 네 번째 가방(7 + 5 = 12)을 다른 친구에게 주면 두
문제 설명N개의 요소를 가진 두 배열 A와 B가 있다고 가정해 보겠습니다. 여기에는 N대의 컴퓨터와 N개의 소켓이 있으며, i번째 컴퓨터의 좌표는 A[i], i번째 소켓의 좌표는 B[i]입니다. 이 2N개의 좌표 값은 서로 모두 다르다고 가정합니다.우리는 케이블을 사용해 각 컴퓨터를 소켓에 하나씩 연결하려고 합니다. 단, 각 소켓에는 최대 한 대의 컴퓨터만 연결할 수 있습니다. 이때 케이블 길이의 총합을 최소화할 수 있는 연결 방법이 총 몇 가지인지 구해야 하며, 답이 너무 커질 수 있으므로 10^9 + 7로 나눈 나머지를 반환합니
두 개의 숫자 K와 X가 주어졌다고 가정해 보겠습니다. 아말(Amal)은 500루피짜리 지폐를 K장 가지고 있으며, 이 지폐들의 총합이 X루피 이상이 되는지 확인해야 합니다.예를 들어 입력이 K = 2, X = 900이라면 출력은 True(참)가 됩니다. 2 × 500 = 1000이므로 900보다 작지 않기 때문입니다.문제 해결 접근 방식이 문제는 매우 간단한 산술 비교만으로 해결할 수 있습니다. 로직은 다음과 같습니다.500루피 지폐가 K장 있으므로, 총 금액은 500 × K입니다.이 값이 X보다 크거나 같으면 참(true)을 반
두 정수 N과 K가 주어졌다고 가정해 보겠습니다. 우리의 목표는 N개의 크래커를 K명의 사용자에게 최대한 공평하게 분배하는 것입니다. 이때, 한 명의 사용자가 받는 크래커 개수 중 최댓값과 최솟값 사이의 차이를 가능한 한 작게 만들어야 하며, 그 차이의 최솟값을 구해야 합니다.문제 예시예를 들어 N = 7, K = 3이라고 입력되면 출력은 1이 됩니다. 세 명의 사용자가 각각 2개, 2개, 3개의 크래커를 받았을 때, 가장 많이 받은 개수(3개)와 가장 적게 받은 개수(2개)의 차이가 1이 되기 때문입니다.접근 방법이 문제는 아주
문제 개요 소문자 영어 알파벳으로만 구성된 문자열 S가 있다고 가정해 보겠습니다. 우리는 이 문자열에 정확히 한 개의 문자 a를 삽입해야 합니다. 삽입한 결과가 회문(palindrome)이 아니게 만들 수 있다면 해당 문자열을 반환하고, 어떻게 삽입하더라도 회문이 된다면 impossible을 반환해야 합니다. 예를 들어 입력이 S = bpapb라면, 뒤에 a를 붙인 bpapba는 회문이 아니므로 이것이 정답이 됩니다. 해결 접근 방식 이 문제는 간단한 시행을 통해 해결할 수 있습니다. 먼저 문자열의 맨 뒤에 a를 붙였을 때 회문이
길이가 N인 문자열 S가 주어졌다고 가정해 봅시다. 문자열 S는 A, B, C 세 종류의 대문자로만 구성되어 있으며, 정수 K도 함께 주어집니다. 우리가 해야 할 일은 문자열 S에서 K번째 문자를 소문자로 변환한 뒤 결과를 출력하는 것입니다.예를 들어, 입력이 K = 2, S = AABACC라면 두 번째 문자 A가 소문자로 바뀌어 출력 결과는 AaBACC가 됩니다.해결 접근 방식이 문제는 아스키(ASCII) 코드의 성질을 이용하면 아주 간단하게 해결할 수 있습니다. 대문자의 아스키 코드 값은 65~90 범위에 있고, 소문자는 97~