개발 일지
2610. Convert an Array Into a 2D Array With Conditions (조건에 따라 배열을 2차원 배열로 변환) 본문
코딩 테스트/LeetCode
2610. Convert an Array Into a 2D Array With Conditions (조건에 따라 배열을 2차원 배열로 변환)
포카리tea 2024. 9. 27. 14:45정수 배열 nums가 주어집니다. 다음 조건을 충족하는 nums로 2D 배열을 만들어야 합니다:
- 2D 배열에는 배열 nums의 요소만 포함되어야 합니다.
- 2D 배열의 각 행에는 고유한 정수가 포함되어 있습니다.
- 2D 배열의 행 수는 최소이어야 합니다.
결과 배열을 반환합니다. 답이 여러 개인 경우 그 중 하나를 반환합니다.
2D 배열에는 각 행에 다른 수의 요소가 있을 수 있습니다.
예시 1:
입력: nums = [1,3,4,1,2,3,1]
출력: [[1,3,4,2],[1,3],[1]]
설명: 다음 행이 포함된 2D 배열을 만들 수 있습니다:
- 1,3,4,2
- 1,3
- 1
모든 숫자 요소가 사용되었으며 2D 배열의 각 행에는 고유한 정수가 포함되므로 유효한 답입니다.
유효한 배열에 3개 미만의 행을 가질 수 없음을 알 수 있습니다.
예시 2:
입력: nums = [1,2,3,4]
출력: [[4,3,2,1]]
설명: 배열의 모든 요소는 서로 다르기 때문에 모든 요소를 2D 배열의 첫 번째 행에 보관할 수 있습니다.
조건:
- 1 <= nums.length <= 200
- 1 <= nums[i] <= nums.length
정답:
public class Solution {
public IList<IList<int>> FindMatrix(int[] nums) {
IList<IList<int>> result = new List<IList<int>>();
List<int> numsCopy = nums.ToList();
int resultCount = 0;
while (numsCopy.Count != 0)
{
result.Add(new List<int>());
for (int i = 0; i < numsCopy.Count; i++)
{
if (!result[resultCount].Contains(numsCopy[i]))
{
result[resultCount].Add(numsCopy[i]);
numsCopy.RemoveAt(i);
i -= 1;
}
}
resultCount += 1;
}
return result;
}
}
해설: nums의 요소를 result에 넣을 때 해당 요소를 삭제한다면 모두 제거될 때까지 반복하면 정리가 완료된 것으로 간주합니다.
만약 요소가 남아있다면 중복된 요소이기 때문에 List를 늘려준 후 늘려진 result[resultCount]내에 중복한 요소를 제거하고 모두 추가해줍니다.
해당 작업을 모두 반복한 후 return해줍니다.
'코딩 테스트 > LeetCode' 카테고리의 다른 글
1491. Average Salary Excluding the Minimum and Maximum Salary (최저 및 최대 급여를 제외한 평균 급여) (0) | 2024.09.30 |
---|---|
1513. Number of Substrings With Only 1s (1만 있는 부분 문자열의 수) (0) | 2024.09.27 |
905. Sort Array By Parity (짝수에 따른 배열 정렬) (0) | 2024.09.26 |
908. Smallest Range I (최소 범위 I) (0) | 2024.09.26 |
316. Remove Duplicate Letters (중복된 글자 제거) (0) | 2024.09.26 |