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
관리 메뉴

개발 일지

229. Majority Element II (다수 원소 II) 본문

코딩 테스트/LeetCode

229. Majority Element II (다수 원소 II)

포카리tea 2024. 11. 1. 17:53

크기 n의 정수 배열이 주어지면 ⌊ n/3 ⌋ 번 이상 나타나는 모든 원소를 구합니다.

 

 

예시 1:

입력: nums = [3,2,3]
출력: [3]

 

예시 2:

입력: nums = [1]
출력: [1]

 

예시 3:

입력: nums = [1,2]
출력: [1,2]



 

조건:

  • 1 <= nums.length <= 5 * 1^4
  • -10^9 <= nums[i] <= 10^9

 

정답:

public class Solution {
    public IList<int> MajorityElement(int[] nums) {
         List<int> result = new List<int>();
        int countCheck = nums.Length / 3 + 1;
        var numsDistinct = nums.Distinct().ToArray();
        
        for (int i = 0; i < numsDistinct.Count(); i++)
        {
            if (nums.Count(n => n == numsDistinct[i]) >= countCheck)
            {
                result.Add(numsDistinct[i]);
            }
        }
        
        return result;
    }
}

해설: ⌊ n/3 ⌋번 이상 있는 정수 배열을 return하는 문제입니다.

먼저 n/3을 우선적으로 countCheck에 넣어둡니다.

그 다음 중복되지 않는 리스트만 체크하기 위하여 Distinct를 이용하여 중복을 제거한 후 nums.Count에서 numsDistinct에서 하나하나 갯수를 확인 후 만약 countCheck 이상이라면 result에 add하고 계산이 완료되면 result를 return합니다.