글
프로그래머스 C# 최빈값 구하기(count, JAVA)
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();
}
}
'프로그래밍' 카테고리의 다른 글
프로그래머스 C# 문자열안에 문자열(string.Contains, P, J) (0) | 2022.12.29 |
---|---|
프로그래머스 C# 옷가게 할인 받기(if문, 3항 연산자, 삼항연산자, P, J) (0) | 2022.12.29 |
프로그래머스 C# 중앙값 구하기(int[] -> Array.Sort(), 홀수 배열만, P, J) (0) | 2022.12.28 |
프로그래머스 C# 분수의 덧셈(분자, 분모, JAVA) (0) | 2022.12.28 |
프로그래머스 C# 문자 반복 출력하기(new string, Substring, P, J) (0) | 2022.12.28 |