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);
}
}