Notice
Recent Posts
Recent Comments
Link
«   2025/06   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Tags
more
Archives
Today
Total
관리 메뉴

개발 일지

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해줍니다.