본문 바로가기
728x90
반응형

분류 전체보기301

matrixElementsSum 주어진 2D 행렬에서 유효한 방을 통과하면서 방문한 모든 셀의 값을 합산하는 문제입니다. 다만, 한 번 방문한 행의 아래 층에 있는 방들은 모두 0으로 처리되며, 이후에 방문한 행에 있는 방들만 유효하게 합산됩니다. int matrixElementsSum(int[][] matrix) { int totalSum = 0; int rows = matrix.Length; int cols = matrix[0].Length; for (int col = 0; col < cols; col++) { for (int row = 0; row < rows; row++) { if (matrix[row][col] == 0) { // 만약 현재 열에 0이 등장하면 해당 열 이후의 행들의 값을 무시 break; } // 0이 등장하.. 2023. 11. 25.
Almost Increasing Sequence 주어진 배열에서 하나의 원소를 제거하여 배열을 증가 수열로 만들 수 있는지 여부를 확인하는 문제입니다. 여기서 증가 수열은 배열의 모든 원소가 비감소하는 수열을 말합니다. 예를 들어, [1, 3, 2, 1] 배열이 주어졌을 때, 한 개의 원소를 제거하여 [1, 3, 1]로 만들면 증가 수열이 됩니다. 따라서 이 문제에서는 한 개의 원소를 제거하면서 증가 수열을 만들 수 있는지 여부를 판단해야 합니다. 이 문제를 해결하는 알고리즘은 다양할 수 있으며, 주로 배열을 순회하면서 현재 원소와 다음 원소를 비교하면서 적절한 조치를 취하는 방식을 사용합니다. 다양한 조건을 고려하여 문제를 해결하는 것이 중요합니다. public class Solution { public bool AlmostIncreasingSequ.. 2023. 11. 25.
Make Array Consecutive 2 주어진 정수 배열을 정렬하고, 배열 안의 연속된 숫자 사이에 빈 공간이 있을 때, 이 빈 공간을 채우기 위해 필요한 추가적인 숫자의 개수를 구하는 문제입니다. 예를 들어, 주어진 배열이 [6, 2, 3, 8]이라면, 이 배열을 정렬하면 [2, 3, 6, 8]이 됩니다. 그런데 3 다음에 4와 5가 빈 공간으로 존재하고, 6과 8사이에 7의 빈 공간이 존재하므로, 최소 3개의 추가 숫자가 필요합니다. 따라서 이 문제는 정렬된 배열에서 숫자들 사이의 갭을 계산하여 필요한 추가 숫자의 수를 구하는 것이 목표입니다. int solution(int[] statues) { Array.Sort(statues); int start = statues[0]; int cnt = 0; int idx = 1; for(int i.. 2023. 11. 22.
firstDuplicate 배열 a에 있는 숫자 중에서 두 번 이상 나타난 숫자 중에서, 두 번째 등장한 순서의 인덱스가 최소인 숫자를 찾는 문제입니다. 예를 들어, 주어진 배열이 [2, 1, 3, 5, 3, 2]인 경우: 2는 두 번 등장했지만 두 번째 등장한 2의 인덱스는 5이므로 고려하지 않습니다. 1은 한 번만 등장하므로 고려하지 않습니다. 3은 두 번 등장하고, 두 번째 등장한 3의 인덱스는 4입니다. 5는 한 번만 등장하므로 고려하지 않습니다. 따라서 이 경우에는 3이 문제의 답이 됩니다. 각 경우에 대해 어떤 숫자가 두 번 이상 나타났고, 그 중 두 번째 등장한 인덱스가 최소인지 확인하면서 답을 찾을 수 있습니다. 만약 그러한 숫자가 없다면 -1을 반환합니다. int solution(int[] a) { Dictiona.. 2023. 11. 17.
162. Find Peak Element 어진 정수 배열에서 peak element를 찾는 문제입니다. Peak element는 해당 위치에서 좌우의 원소보다 큰 값을 갖는 원소를 의미합니다. 예를 들어, 배열 [1, 2, 3, 1]에서 3은 peak element입니다. 배열 [1, 2, 1, 3, 5, 6, 4]에서 6도 peak element입니다. 이 문제를 풀기 위한 일반적인 방법은 이진 검색(Binary Search)을 사용하는 것입니다. 이진 검색을 사용하면 O(log N)의 시간 복잡도로 peak element를 찾을 수 있습니다. public int FindPeakElement(int[] nums) { if (nums.Length == 0) { return -1; // 배열이 비어있는 경우 } // 배열의 길이가 1인 경우 if.. 2023. 11. 16.
160. Intersection of Two Linked Lists 두 개의 연결 리스트가 주어졌을 때, 두 리스트가 교차하는 지점을 찾는 문제입니다. 교차 지점이 없으면 null을 반환해야 합니다. List A: A1 → A2 ↘ C1 → C2 → C3 ↗ List B:B1 → B2 → B3 이 경우, 리스트 A와 리스트 B는 C1에서 교차하고, 이 지점이 교차 지점이 됩니다. 두 연결 리스트의 길이를 각각 계산합니다. 두 리스트의 길이 차이를 구하고, 길이가 더 긴 리스트의 포인터를 그 차이만큼 이동시킵니다. 이제 두 포인터를 동시에 이동시켜 교차 지점을 찾습니다. public class ListNode { public int val; public ListNode next; public ListNode(int val = 0, ListNode next = null) {.. 2023. 11. 15.
455. Assign Cookies 이 문제에서는 어떤 아이들이 존재하며, 각각의 아이들은 만족할 수 있는 최소한의 쿠키 크기를 가지고 있습니다. 또한, 쿠키들도 각각의 크기를 가지고 있습니다. 이 문제에서는 아이들에게 쿠키를 나눠주는 방법을 찾아야 합니다. 이때, 각 아이들은 최대 한 개의 쿠키만 받을 수 있습니다. 따라서, 가능한 많은 아이들에게 쿠키를 나눠주는 방법을 찾아야 합니다. 이 문제는 그리디 알고리즘을 사용하여 해결할 수 있습니다. public class Solution { public int FindContentChildren(int[] g, int[] s) { Array.Sort(g); Array.Sort(s); int i = 0; for (int j = 0; i < g.Length && j < s.Length; j++).. 2023. 11. 10.
728x90
반응형