가변 배열을 입력받아 배열의 각 요소 중 최빈값 구하기



Set Map List 남발하다가 못 풀음

더 무서운 건 대다수의 풀이가 2레벨 수준임에도 불구하고 저게 0레벨이라 많은 코테 뉴비들을 낚았다는 것이다


최빈값이 몇 번 나오는지까진 알았는데

그 몇 번 나온 값을 어떻게 리턴해야 되지

Map<K, V>식으로 하면 V가 중복이 가능하니까 V로 K를 못 불러올테고




[1, 2, 3, 2, 4, 2, 5] 이런 식으로 들어온다 치면

저걸 일단 Set에 때려박아 [1, 2, 3, 4, 5]로 만들고


Set의 요소를 기준으로 [1, 2, 3, 2, 4, 2, 5]를 반복 돌려서 Set의 각 항목이 [1, 2, 3, 2, 4, 2, 5]에서 몇 번 나오는지 센 다음


그 값을 Set과 함께 Map에 {1=1, 2=3, 3=1, 4=1, 5=1} 이런식으로 다 넣고

이제 그 Map에서 getKey() 하면 [1, 2, 3, 4, 5]고 values()로 값만 뽑아오면 [1, 3, 1, 1, 1]이니까


values()의 값이 3인 것의 인덱스값 i로

getKey()의 i번째인 2를 가져오면 될 거 같은데


Map이라는 자료 구조 자체가 키로 값을 불러오는거지 값으로 키를 불러오는 게 아니다보니 [1, 3, 1, 1, 1]에서 3의 인덱스를 가져온다는 게 안되서 씨름중