LeetCode - 3337. Total Characters in String After Transformations II
·
Algorithm
문제링크 문제 설명소문자로 이루어진 문자열 s, 정수 t (변환 횟수), 그리고 크기가 26인 정수 배열 nums가 주어집니다.이때, 정확히 t번의 변환(Transformation)을 수행하게 됩니다. 각 변환은 아래 규칙에 따라 진행됩니다:문자열 s의 각 문자 s[i]를 다음과 같이 변경합니다:s[i] = 'a'라면 nums[0]개의 연속된 알파벳 문자로 변경됩니다.즉, s[i]는 다음 알파벳 문자부터 시작하여 nums[s[i] - 'a']개의 문자를 나열한 문자열로 대체됩니다.예: s[i] = 'a', nums[0] = 3이라면 'a' → "bcd"로 변환됩니다.예: s[i] = 'y', nums[24] = 3이라면 'y' → "zab"로 변환됩니다. (알파벳은 z 이후 a로 순환됩니다)이 과정을 정..
LeetCode - 3335. Total Characters in String After Transformations I
·
Algorithm
문제링크 문제 설명문자열 s와 정수 t가 주어집니다. 여기서 t는 총 변환 횟수를 나타냅니다.한 번의 변환(Transformation)에서 문자열 s의 모든 문자는 다음 규칙에 따라 변경됩니다:문자가 'z'인 경우 → 'ab'로 확장문자가 'z'가 아닌 경우 → 알파벳 상 다음 문자로 변경예: 'a' → 'b', 'b' → 'c', ..., 'y' → 'z'정확히 t번의 변환을 수행한 뒤의 문자열 길이를 구하세요.결과가 매우 클 수 있으므로, 정답을 10^9+7 로 나눈 값을 반환하세요.제한 사항1 s consists only of lowercase English letters.1 예시Example 1:Input: s = "abcyy", t = 2Output: 7Explanation:First Trans..
LeetCode - 790. Domino and Tromino Tiling
·
Algorithm
문제링크 문제 설명너비가 n, 높이가 2인 보드가 주어집니다. 이 보드를 다음 두 종류의 타일로 채우려 합니다:도미노 타일 (2×1)트로미노 타일 (L자 모양의 3칸) – 회전 가능모든 칸은 타일로 정확히 한 번씩 덮여야 하며,두 타일링이 서로 다르다고 간주되는 경우는 다음과 같습니다:서로 상하좌우로 인접한 두 칸이 있을 때, 한 타일링에서는 하나의 타일이 두 칸 모두를 덮고 있지만,다른 타일링에서는 그렇지 않은 경우정수 n이 주어질 때,2 × n 보드를 타일링하는 서로 다른 방법의 수를 구하세요.단, 정답이 매우 클 수 있으므로 10⁹ + 7로 나눈 나머지를 반환하세요.제한 사항1 예시Example 1:Input: n = 3Output: 5Explanation: The five different way..
LeetCode - 1007. Minimum Domino Rotations For Equal Row
·
Algorithm
문제링크 문제 설명도미노 타일들이 일렬로 나열되어 있으며,각 도미노의 윗면과 아랫면 숫자가 tops[i]와 bottoms[i]로 주어집니다. (각 숫자는 1부터 6 사이입니다.)각 도미노는 회전시킬 수 있습니다, 즉, tops[i]와 bottoms[i]의 값을 서로 바꿀 수 있습니다.당신의 목표는 다음 중 하나를 만드는 것입니다:tops 배열의 모든 값이 동일해지도록,또는 bottoms 배열의 모든 값이 동일해지도록.가능하다면, 그렇게 만들기 위해 필요한 최소 회전 횟수를 반환하고, 불가능하다면 -1을 반환하세요.제한 사항2 bottoms.length == tops.length1 예시Example 1:Input: tops = [2,1,2,4,2,2], bottoms = [5,2,6,2,3,2]Output..
LeetCode - 2140. Solving Questions With Brainpower
·
Algorithm
문제링크 문제 설명0-indexed 2차원 정수 배열 questions가 주어집니다.각 questions[i] = [pointsi, brainpoweri]는 시험의 i번째 문제에 대한 정보를 나타냅니다.pointsi: i번 문제를 풀었을 때 얻는 점수brainpoweri: i번 문제를 풀 경우, 그 다음의 brainpoweri개 문제는 건너뛰어야 합니다.문제는 순서대로 풀어야 하며, 각 문제에 대해 풀거나(solve) 건너뛸지(skip)를 결정해야 합니다.예를 들어,questions = [[3, 2], [4, 3], [4, 4], [2, 5]]일 때:0번 문제를 풀면 3점을 얻지만, 1번과 2번 문제는 건너뛰어야 합니다.0번을 건너뛰고 1번을 풀면 4점을 얻지만, 2번과 3번 문제는 건너뛰어야 합니다.시..
LeetCode - 3169. Count Days Without Meetings
·
Algorithm
문제링크 문제 설명직원이 근무할 수 있는 총 일수를 나타내는 양의 정수 days가 주어집니다 (1일부터 시작).또한, 크기가 n인 2차원 배열 meetings가 주어지며,meetings[i] = [start_i, end_i]는 i번째 회의가 시작되는 날과 끝나는 날(양 끝 포함)을 나타냅니다.직원이 근무 가능한 날 중, 회의가 잡히지 않은 날의 수를 반환하세요.🔸 회의는 겹칠 수 있습니다. (즉, 동일한 날에 여러 회의가 잡힐 수 있음)제한 사항1 1 meetings[i].length == 21 예시Example 1:Input: days = 10, meetings = [[5,7],[1,3],[9,10]]Output: 2Explanation:There is no meeting scheduled on th..
브루트포스 (완전 탐색) 알고리즘
·
Algorithm
예시 코드는 토글을 클릭하면 확인할 수 있습니다.브루트포스 (완전 탐색)이란브루트포스 (완전 탐색) 말 그대로 가능한 모든 경우를 다 시도해보는 방식입니다. 마치 자물쇠의 모든 번호를 하나씩 돌려보는 것처럼 가장 직관적이고 확실한 방법입니다.다만 이를 PS에서 사용하기 위해서는 시간복잡도를 고려해야 합니다. 시간복잡도를 계산해봤을 때 주어진 시간에 마치지 못 할 것 같으면 최적화를 하거나 다른 방법을 찾아야 합니다. 이때 보통 1초당 1억번의 연산을 실행한다고 이해하면 될 것 같습니다.예제 1. 블랙잭(백준 2798번)https://www.acmicpc.net/problem/2798문제를 정리해보면 N장의 카드 중 3장을 고릅니다. 이 3장의 카드의 합이 M을 넘지 않으면서 최대가 되도록 만드는 문제입니..
LeetCode - 2206. Divide Array Into Equal Pairs
·
Algorithm
문제링크 문제 설명정수 배열 nums가 주어집니다. nums는 2 * n 개의 정수로 이루어져 있습니다.다음 조건을 만족하도록 nums를 n개의 짝(pair) 으로 나누어야 합니다:각 요소는 정확히 한 개의 쌍(pair)에만 포함되어야 합니다.각 쌍의 두 요소는 서로 같아야 합니다.만약 nums를 이러한 방식으로 n개의 쌍으로 나눌 수 있다면 true를 반환하고, 그렇지 않다면 false를 반환하세요.제한 사항nums.length == 2 * n1 1 예시Example 1:Input: nums = [3,2,3,2,2,2]Output: trueExplanation: There are 6 elements in nums, so they should be divided into 6 / 2 = 3 pairs.If..
백준 - 16207: 직사각형
·
Algorithm
문제링크 문제 설명풀이 흐름각 막대별로 최대 1번씩만 기계를 사용할 수 있다는 것에 주목했습니다. 이는 길이의 차가 2이상인 막대는 직사각형의 평행한 변으로 만들 수 없다는 뜻입니다.주어진 막대의 길이들을 정렬한 이후에 최대값부터 순차적으로 탐색하면서 직사각형을 만들 수 있는 4개의 수를 찾았습니다.최대값부터 순차적으로 탐색하는 이유는 다음과 같습니다. (a, b, c, d인 실수가 있고, a >= b >= c >= d 라고 가정)(a * b + c * d) - (a * d + b * c) = a * (b - d) - c * (b - d) = (a - c) * (b - d) >= 0(a * b + c * d) - (a * c + b * d) = a * (b - c) - d * (b - c) = (a - ..
LeetCode - 1358. Number of Substrings Containing All Three Characters
·
Algorithm
문제링크 문제 설명문자열 s가 주어집니다. s는 오직 문자 'a', 'b', 'c'로만 이루어져 있습니다.최소 한 번 이상 'a', 'b', 'c'가 모두 포함된 부분 문자열(substring) 의 개수를 반환하세요.제한 사항3 s only consists of a, b or c characters.예시Example 1:Input: s = "abcabc"Output: 10Explanation: The substrings containing at least one occurrence of the characters a, b and c are "abc", "abca", "abcab", "abcabc", "bca", "bcab", "bcabc", "cab", "cabc" and "abc" (again).  E..