본문 바로가기
study/Java

[Java] 33 ~ 35. Test2 풀이 (SutdaDeck를 이용하여 다음 구동 클래스를 완성하시오)

by 금이패런츠 2022. 3. 31.
728x90
반응형
package chap13;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.Scanner;
import java.util.TreeMap;

/*
 * SutdaDeck를 이용하여 다음 구동 클래스를 완성하시오
 [결과]
static 초기화블럭
[1K, 2, 3K, 4, 5, 6, 7, 8K, 9, 10, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[6, 7, 5, 4, 5, 8, 9, 10, 2, 3, 10, 4, 1K, 6, 1, 7, 2, 3K, 9, 8K]
게임할 인원수를 입력하세요
5
1등:2번(5,4):9
1등:4번(9,10):9
3등:5번(2,3):5
4등:1번(6,7):3
4등:3번(5,8):3
  
 */
public class Test0325_2 {

	public static void main(String[] args) {
		SutdaDeck deck = new SutdaDeck();
		deck.shuffle();
		Scanner scan = new Scanner(System.in);
		int gameCnt = 0;
		do {
		   System.out.println("게임할 인원수를 입력하세요");
		   gameCnt = scan.nextInt();
		} while(gameCnt < 2 || gameCnt > 10);
		
		List<Gamer> list = new ArrayList<>();
		for(int i=0;i<gameCnt;i++) {
			list.add
			(new Gamer((i+1)+"번",deck.pick(),deck.pick()));
		}
 		System.out.println("단순 등수 : ");
		Collections.sort(list, (o1,o2)->o2.getScore() - o1.getScore());
		System.out.println("등수:");
		int i=0;
		for(Gamer g : list) {
		   System.out.println(++i + "등:" + g);
		}
		
 		System.out.println("동점자 등수 : ");
		Map<Integer,List<Gamer>> rank = new TreeMap<>(Comparator.reverseOrder());
		for(Gamer g : list) {
			List<Gamer> eqrank = rank.get(g.getScore());
			if(eqrank == null) 
				eqrank = new ArrayList<>();
			eqrank.add(g);
			rank.put(g.getScore(), eqrank);
		}	
		int r = 0;
		for(List<Gamer> l : rank.values()) {
			for(Gamer g : l) 
				System.out.println((r+1) + "등:" + g);
			r += l.size();
		}
	}
}
728x90
반응형