
최빈값은 값 중에서 가장많이 나오는 값이니까 음...
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))
이렇게도 풀수가 있구나 내가 푼거보다 더 깔끔해보인다
더 공부해야지 ㅠㅠ