[JAVA] SWEA 7102 - 준홍이의 카드놀이

hyng·2022년 2월 28일
0

SWEA

목록 보기
44/78

  1. 두 카드 세트에서 한 장씩 더한 값이 각각 몇 번 나오는지 map에 저장한다.
  2. map을 value 기준으로 오름차순 한 다음 가장 많이 나온 수인 max 값과 나온 횟수가 같은 숫자를 찾아 list에 저장한다.
  3. list를 오름차순 해 정답을 출력한다.
import java.util.*;
class Solution
{
	public static void main(String args[]) throws Exception
	{
		Scanner sc = new Scanner(System.in);
        StringBuffer sb = new StringBuffer();


        int T = sc.nextInt();
        for (int tc = 1; tc <= T; tc++) {
            sb.append("#").append(tc).append(" ");

            int N = sc.nextInt();
            int M = sc.nextInt();

            ArrayList<Integer> cardSet1 = new ArrayList<>();
            ArrayList<Integer> cardSet2 = new ArrayList<>();

            for(int i=1; i<=N; i++){
                cardSet1.add(i);
            }
            for(int i=1; i<=M; i++){
                cardSet2.add(i);
            }

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

            int max = 0;
            for(int i=1; i<=N; i++){
                int sum = i;
                for(int j=1; j<=M; j++){
                    int copySum = sum + j;
                    int com = 0;
                    if(map.containsKey(copySum)){
                        com = map.get(copySum) + 1;
                        map.replace(copySum, com);
                    }else{
                        com = 1;
                        map.put(copySum, com);
                    }
                    max = Math.max(max, com);
                }
            }
            List<Map.Entry<Integer, Integer>> entries = new LinkedList<>(map.entrySet());
            Collections.sort(entries, (o1, o2) -> o2.getValue().compareTo(o1.getValue()));

            ArrayList<Integer> answer = new ArrayList<>();

            for(int i=0; i<entries.size(); i++){
                if(entries.get(i).getValue() == max){
                    answer.add(entries.get(i).getKey());
                }else
                    break;
            }
            Collections.sort(answer);
            for(int i=0; i<answer.size(); i++){
                sb.append(answer.get(i)).append(" ");
            }
            sb.append("\n");
        }
        System.out.println(sb);
    }
	
}
profile
공부하고 알게 된 내용을 기록하는 블로그

0개의 댓글