728x90
SMALL

using System;

public class Solution {
    public int solution(int[] array) {
        int answer = 0;
        
        // array 최대값 구하기
        Array.Sort(array);
        Array.Reverse(array);
        int[] count = new int[array[0] + 1];

/// 나중에 가장 큰 수가 몇 번 나왔는지 count하는 작업이 있기 때문에 가장 큰 수 +1개의 공간을 만든다.
        int max = 0;
        int num = 0;
        
        // array의 들어있는 값을 count 배열 인덱스에 넣고 개수가 있는 만큼 추가

//1번 예에서는 count[0] = 0 / count[1] = 1 / count[2] = 1 / count[3] = 3 / count[4] = 1 / count[5] = 0 이렇게 나온다. 3이 제일 많이 나왔다는 것.
        for(int i = 0; i < array.Length; i++)
        {
            count[array[i]]++;
        }


        // count 배열중 가장 많이 나온 숫자 찾기
        for(int i = 0; i < count.Length; i++)
        {
            if(count[i] > max)
            {
                max = count[i];
                answer = i;

//그러니까 i = 3을 출력한다.
            }
        }
        // count 배열중 가장 많이 나온 개수(max)랑 같은 개수가 있는지 찾기
        for(int i = 0; i < count.Length; i++)
        {
            if(count[i] == max)
            {
                num++;
            }
        }
        // 개수가 같은 값이 1개 이상인 경우 찾기, -1을 반환한다.
        if(num > 1)
        {
            answer = -1; // return -1;
        }
        
        return answer;
    }
}

 

 

자바

 

 

import java.util.*;
class Solution {
    public int solution(int[] array) {
        int maxCount = 0;
        int answer = 0;

        Map<Integer, Integer> map = new HashMap<>();

        // getOrDefault : 찾는 키가 존재한다면 찾는 키의 값을 반환하고 없다면 기본 값을 반환하는 메서드
        // getPrDefault(Object key, V DefaultValue)
        // 매개변수 : 이 메서드는 두개의 매개변수를 허용
        // key : 값을 가져와야 하는 요소의 키
        // defaultValue : 지정된 키로 매핑된 값이 없는 경우 반환되어야 하는 기본값
        // 반환값 : 찾는 key가 존재하면 해당 key에 매핑되어 있는 값을 반환하고, 그렇지 않으면 디폴트 값이 반환

        for(int number : array) 
        {
            int count = map.getOrDefault(number, 0) + 1;

            if(count > maxCount) 
            {
                maxCount = count;
                answer = number;
            }
            else if(count == maxCount) 
            {
                answer = -1;
            }

            map.put(number, count);
        }

        return answer;
    }
}

 

 

import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

class Solution {
    public int solution(int[] array) {
        Map<Integer, Integer> map = new LinkedHashMap<>();

        for (int num : array) 
        {
            map.put(num, map.getOrDefault(num, 0) + 1);
        }

        List<Map.Entry<Integer, Integer>> entries = new ArrayList<>(map.entrySet());
        entries.sort((o1, o2) -> o2.getValue() - o1.getValue());

        if (entries.size() > 1) 
        {
            if (entries.get(0).getValue() == entries.get(1).getValue()) 
              return -1;
        }

        return entries.get(0).getKey();
    }
}
728x90

설정

트랙백

댓글