문제
트럼프카드는 하트, 다이아, 클럽, 스페이스 네가지 종류가 있으며 각 카드마다 1 ~ 10, J, K, Q 13장의 카드가 있다
즉 카드는 총 52장의 카드가 있다.
영준이가 받은 카드가 문자열로 주어질 때, 영준이가 받지 않은 나머지 카드가 몇 개 존재하는 지 구하는 문제
풀이방법
1) 각 하트, 다이아, 클럽, 스페이스 마다 길이 14의 배열을 만들고 0으로 초기화한다.
2) 입력된 문자열을 3의 길이로 나누어 영준이가 받은 카드가 어떤 것인지 구분한다.
3) 각 배열에서 영준이가 받은 카드를 1로 표시해준다.
4) 영준이가 받은 카드를 모두 체크해준 다음 각 배열에서 0의 갯수를 센다.
소스코드
package samsung;
import java.util.*;
public class s_4047 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int test = sc.nextInt();
for(int t = 1; t <= test; t++) {
String str = sc.next();
int[] s = new int[14];
int[] d = new int[14];
int[] h = new int[14];
int[] c = new int[14];
int s_cnt = 0;
int d_cnt = 0;
int h_cnt = 0;
int c_cnt = 0;
for(int i = 0; i < str.length() / 3; i++) {
String shape = str.substring(3*i, 3*i+1);
int num = Integer.valueOf(str.substring(3*i + 1, 3*i + 3));
if(shape.equals("S")) {
s[num]++;
}
else if(shape.equals("D")) {
d[num]++;
}
else if(shape.equals("H")) {
h[num]++;
}
else if(shape.equals("C")) {
c[num]++;
}
}
int flag = 0;
for(int i = 1; i < 14; i++) {
if(s[i] > 1 || d[i] > 1 || h[i] > 1 || c[i] > 1) {
flag = 1;
System.out.println("#" + t + " " + "ERROR");
break;
}
if(s[i] == 0)
s_cnt++;
if(d[i] == 0)
d_cnt++;
if(h[i] == 0)
h_cnt++;
if(c[i] == 0)
c_cnt++;
}
if(flag == 0) {
System.out.println("#" + t + " " + s_cnt + " " + d_cnt + " " + h_cnt + " " + c_cnt);
}
}
}
}
'Problem Solving > SWEA' 카테고리의 다른 글
[SWEA] 4466. 최대 성적표 만들기 (0) | 2020.02.21 |
---|---|
[SWEA] 4406. 모음이 보이지 않는 사람 (0) | 2020.02.21 |
[SWEA] 3499. 퍼펙트 셔플 (0) | 2020.02.21 |
[SWEA] 3456. 직사각형 길이 찾기 (0) | 2020.02.21 |
[SWEA] 3431. 준환이의 운동관리 (0) | 2020.02.21 |
댓글