본문 바로가기
카테고리 없음

[Programmers] 코딩테스트입문 > 최빈값 구하기

by yoon9i 2024. 10. 5.

 

최빈값은 값 중에서 가장많이 나오는 값이니까 음...
 
class Solution {
    public int solution(int[] array) {
        int[] index = new int[1000]; // 값별 개수를 구하기 위한 변수
        int isDuplication = 0; // 중복여부
        int maxValue = 0; // 최대값(최빈값)
        int answer = 0; // 결과값

        for (int i = 0; i < array.length; i++) {
            index[array[i]]++; // 값별 개수를 구한다.

            // 값별 개수의 최대값이 곧 최빈값이 됨.
            if (maxValue < index[array[i]]) {
                maxValue = index[array[i]];
                answer = array[i];
            }
        }

        for (int i : index) {
            if (i == max) isDuplication++;
            if (isDuplication > 1) answer = -1;
        }
        
        return answer;
    }
}

 

자바로 하면 이렇게되는데...

 

def solution(array):
	count = [0] * (max(array)+1) # 숫자 출연 횟수를 셀 리스트

	for i in array:
		count[i] += 1

	maxValue = 0 # 최빈값의 개수
	for c in count:
		if c == max(count):
			maxValue += 1
    
	if maxValue > 1: # 최빈값이 2개 이상이면 -1을 리턴
		return -1
	else: # 최빈값이 1개이면 해당 숫자를 리턴
		return count.index(max(count))

 

진짜 한참걸렸네..

def solution(array):
    while len(array) != 0:
        for i, a in enumerate(set(array)):
            array.remove(a)
        if i == 0: return a
    return -1

 

 

def solution(array):
    answer = 0
    idx = [0] * 1001
    for i in array:
        idx[i] +=1
    if idx.count(max(idx)) >1:
        return -1
    return idx.index(max(idx))

 

이렇게도 풀수가 있구나 내가 푼거보다 더 깔끔해보인다

더 공부해야지 ㅠㅠ