문제 : boj11507
1. 3글자씩 잘라서 각각의 카드를 판단할 수 있어야 함.
길이가 일정하므로 그냥 character 기준으로 3개씩 잘라내면 된다.
2. 똑같은 카드가 존재하는지 판단
'1'의 문자열을 가지고 HashSet을 사용하면 쉽게 동일 카드가 존재하는지 확인할 수 있다.
3. 얼마나 많은 카드를 잃어버렸는지 판단
'1'의 문자열에서 0번 인덱스의 문자(character)를 가지고 카운팅하면 된다. 즉, 첫번째 문자가 각각 P, K, H, T인 것의 개수를 센다. 이후 13-P개수, 13-K개수, 13-H개수, 13-T개수를 출력해주면 된다.
코드 : github
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.HashSet;
public class Main {
private void solution() throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = br.readLine();
HashSet<String> hs = new HashSet<>();
int[] cnt = new int[4];
for (int i = 0; i < str.length(); i+=3) {
String cur = str.substring(i, i+3);
if (hs.contains(cur)) {
System.out.println("GRESKA");
return;
}
hs.add(cur);
switch (cur.charAt(0)) {
case 'P' : cnt[0]++; break;
case 'K' : cnt[1]++; break;
case 'H' : cnt[2]++; break;
case 'T' : cnt[3]++; break;
}
}
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 4; i++) {
sb.append(13-cnt[i]).append(' ');
}
System.out.println(sb);
}
public static void main(String[] args) throws Exception {
new Main().solution();
}
}
'PS > BOJ' 카테고리의 다른 글
백준 2947 자바 - 나무 조각 (BOJ 2947 JAVA) (0) | 2022.02.27 |
---|---|
백준 14729 자바 - 칠무해 (BOJ 14729 JAVA) (0) | 2022.02.26 |
백준 20115 자바 - 에너지 드링크 (BOJ 20115 JAVA) (0) | 2022.02.24 |
백준 16936 자바 - 나3곱2 (BOJ 16936 JAVA) (0) | 2022.02.23 |
백준 10817 파이썬 - 세 수 (BOJ 10817 Python) (0) | 2022.02.23 |
댓글