[JAVA] SWEA 4047 - 영준이의 카드 카운팅

hyng·2022년 2월 15일
0

SWEA

목록 보기
33/78

Solution

  • set: 카드의 정보를 나타내는 TXT를 저장, 카드가 중복되는지를 판단
  • map: 각 카드를 카운팅
  • set으로 모든 카드를 넣어두는데, 만약 이미 해당 카드가 존재한다면 ERROR
  • 해당 카드가 존재하지 않는다면 카드를 set에 넣어두고 map을 사용해서 카드의 카운트를 증가

Code

import java.util.*;
class Solution
{
    static HashMap<String, Integer> map = new LinkedHashMap<>();

	public static void main(String args[]) throws Exception
	{
		Scanner sc = new Scanner(System.in);
        StringBuffer sb = new StringBuffer();

        init();

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

            HashSet<String> set = new HashSet<>();
            String input = sc.nextLine();
            boolean isBreak = false;
            for(int i=0; i<input.length(); i+=3){
                String s = input.substring(i, i+3);
                if(set.contains(s)){
                    sb.append("ERROR");
                    isBreak = true;
                    break;
                }
                set.add(s);

                String card = s.substring(0,1);
                map.replace(card, map.get(card)+1);
            }
            if(!isBreak)
            {
                for (String s : map.keySet()) {
                    sb.append(13 - map.get(s)).append(" ");
                }
            }
            for (String s : map.keySet()) {
                map.replace(s, 0);
            }
            sb.append("\n");
        }
        System.out.println(sb);
    }

    private static void init() {
        map.put("S", 0);
        map.put("D", 0);
        map.put("H", 0);
        map.put("C", 0);
    }

}
profile
공부하고 알게 된 내용을 기록하는 블로그

0개의 댓글