문제 : 문제 : 모의고사를 치르는데 수포자 3명이 각자의 동일한 방법으로 문제를 찍을 시
가장 많이 맞추는 사람 을 Return 하며, 만일 같을 시 오름차순으로 Return
1번 수포자가 찍는 방식: 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, ...
2번 수포자가 찍는 방식: 2, 1, 2, 3, 2, 4, 2, 5, 2, 1, 2, 3, 2, 4, 2, 5, ...
3번 수포자가 찍는 방식: 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, ...
풀이 : C# 에선 Dictionary 를 Toarray 로 Linq 를 쓸수 있었지만 Java 에서는 찾아도 나오지않아서..
hashMap 에서 Value 를 기준으로 정렬하는 것을 진행 함.
package com.company;
import java.util.*;
public class PracticeTest {
static int[] answers = {1,3,2,4,2};
public static void main(String[] args) {
for (int item: solution(answers))
{
System.out.println(item);
}
}
static int[] solution(int[] answers)
{
List<Integer> answer = new ArrayList<>();
HashMap<Integer, Integer> _map = new HashMap<>();
Queue<Integer> q = new LinkedList<>();
for (int i= 0; i < answers.length; i++)
q.offer(answers[i]);
Queue<Integer> q_first = new LinkedList<Integer>(Arrays.asList(1,2,3,4,5));
Queue<Integer> q_second = new LinkedList<Integer>(Arrays.asList( 2, 1, 2, 3, 2, 4, 2, 5));
Queue<Integer> q_third = new LinkedList<Integer>(Arrays.asList( 3, 3, 1, 1, 2, 2, 4, 4, 5, 5));
int F_Point = 0;
int S_Point = 0;
int T_Point = 0;
do {
int nowAnswer = q.poll();
int f_Answer = q_first.poll();
int s_Answer = q_second.poll();
int t_Answer = q_third.poll();
if (nowAnswer == f_Answer)
F_Point++;
if (nowAnswer == s_Answer)
S_Point++;
if (nowAnswer == t_Answer)
T_Point++;
q_first.offer(f_Answer);
q_second.offer(s_Answer);
q_third.offer(t_Answer);
}while(q.stream().count() > 0);
_map.put(1,F_Point);
_map.put(2,S_Point);
_map.put(3,T_Point);
List<Integer> KeySetList = new ArrayList<>(_map.keySet());
KeySetList.sort((x,y) -> _map.get(y).compareTo(_map.get(x)));
int MaxCount = _map.get(KeySetList.get(0));
for (Integer i : KeySetList)
{
if (MaxCount == _map.get(i))
{
answer.add(i);
}
}
return answer.stream().mapToInt(Integer::intValue).toArray();
}
}
'알고리즘 > JAVA' 카테고리의 다른 글
[JAVA] 최대공약수, 최대공배수 - 프로그래머스 (0) | 2020.10.21 |
---|---|
[JAVA] K번째 수 - 프로그래머스 (0) | 2020.10.21 |
[JAVA] 두개 뽑아서 더하기 - 프로그래머스 (0) | 2020.10.20 |
[JAVA] 숫자 배열 중 과반수 찾기 (0) | 2020.10.20 |
JDBC 2단계 - DB와 연결, 데이터 받아오기 (0) | 2015.12.16 |