최빈값 구하기 2

김치헌·2023년 12월 22일
0

TIL

목록 보기
2/38

참고한 코딩자료

using System;
using System.Linq;

public class Solution {
public int solution(int[] array) {

        int answer = 0;
        int iMax = 0;
        int iCount = 0;
        foreach (int val in array.Distinct())
        {
            iCount = array.Count(x => x == val);
            if (iCount > iMax)
            {
                iMax = iCount;
                answer = val;
            }
            else if (iCount == iMax)
            {
                answer = -1;
            }
        }

        return answer;
}

}

알게된 것

foreach문 배열값 마다 반복! 간결하게 자료 작성가능
array.Distinct() 중복값 제외!!
array.Count(x => x==val) 어레이배열에서 x=val인 숫자 카운트
int 어레이에 Null은 0으로 저장된다.

참고한 코딩자료 2

using System;

public class Solution {
public int solution(int[] array) {
int answer = 0;
int mode_count = 0;
int count = 0;
int overlap = 0; // 중복됐는지 체크
Array.Sort(array);
int mode = array[0];
for (int i = 0; i < array.Length; i++)
{
if (i >= 1 && (array[i] == array[i - 1]))
continue;
for (int j = 0; j < array.Length; j++)
{
if (array[i] == array[j])
{
count++;
}
else if (array[i] < array[j])
break;
}
if (mode_count < count)
{
overlap = 0;
mode_count = count;
count = 0;
mode = array[i];
}
else if (mode_count == count)
{
overlap = 1;
count = 0;
}
else
count = 0;
}
if (overlap > 0)
answer = -1;
else
answer = mode;

        return answer;
}

}

알게된 것

Array클래스를 활용하여 array정렬 가능
Array.sort(array);
else if (array[i]<array[j]) 부분을 활용하여
count를 배열로 저장하지 않아도 됨
배열이 아니기 때문에 for문에서 저장된 Max Count와 현재 카운트를 비교하여
같은 값이 있으면 -1 없으면 mode값을 반환
(val이 같을때 count++, val이 다를때 max count와 현재 카운트 비교)

profile
초보개발자

0개의 댓글