츄르사려고 코딩하는 코집사입니다.
1. [SW expert Academy] SWEA 4047번 영준이의 카드 카운팅 자바(Java)
1) 난이도 : D3
2) 문제번호 : 4047번
3) 문제 출처
2. 문제
최근 영준이는 카드 게임에 꽂혀 있다.
영준이가 하는 카드 게임에는 한 덱의 카드가 필요한데 여기서 얘기하는 “한 덱”이란 스페이드, 다이아몬드, 하트, 클로버 무늬 별로 각각 A, 2~10, J, Q, K의 라벨 즉 4개의 무늬 별로
각각 13장씩 총 52장의 카드가 있는 모음을 의미한다.
편의상 A는 1, J, Q, K는 11, 12, 13으로 하여 1~13의 숫자가 카드에 적혀있다고 하자.
영준이는 몇 장의 카드를 이미 가지고 있는데 게임을 하기 위해서 몇 장의 카드가 더 필요한지 알고 싶어 한다.
그리고 이미 겹치는 카드를 가지고 있다면 오류를 출력하고자 한다.
지금 가지고 있는 카드의 정보가 주어지면 이 작업을 수행하는 프로그램을 작성하라.
3. 제약사항
-
4. 입력
맨 위 줄에 테스트케이스의 개수가 주어진다.
각 테스트케이스 별로 순서대로 첫 번째 줄에 지금 영준이가 가지고 있는 카드에 대한 정보 S (1 ≤ |S| ≤ 1000)가 주어진다.
S는 각각 3자리로 표현되는 카드들의 정보를 붙여서 만든 하나의 문자열인데 각 카드는 TXY 꼴로 표현되며,
T는 카드의 무늬(S, D, H, C)이며 XY는 카드의 숫자 (01 ~ 13)이다.
5. 출력
각 테스트케이스 별로 순서대로 한 줄씩 답을 출력하는데, 문자열 S를 보고 지금 무늬 별로(S, D, H, C 순서로) 몇 장의 카드가 부족한지 출력하여라.
이미 겹치는 카드가 있다면 문자열 “ERROR” (쌍따옴표는 출력하지 않는다)를 출력한다
6. 풀이
- 입력값에서 3개씩 끊어서 앞의 문자열은 char c 변수에 넣고, 그 뒤의 숫자는 num에 넣은 뒤 3개를 끊은 그 뒤에 다시 b와 b2를 비교하여 같으면 에러 출력 아니면 c에 따라 각 배열의 값을 줄여가면서 출력
7. 소스 코드
import java.util.*;
public class Solution {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int T = sc.nextInt(); // 테스트 케이스 입력
for(int tc=1; tc<=T; tc++) {
int[] SDHC = new int[4]; // S : 13, D : 13, H : 13, C : 13으로 설정하기 위한 배열
boolean sign = true;
for(int i=0;i<SDHC.length;i++) SDHC[i] = 13; // 13으로 설정
String a = sc.next(); // 입력
//3개씩 끊어서 확인
out : for(int i=0;i<a.length();i+=3) {
String b = a.substring(i,i+3);
char c = b.charAt(0);
int num = Integer.parseInt(b.substring(1,3));
for(int j=i+3;j<a.length();j+=3) {
String b2 = a.substring(j,j+3);
char c2 = b.charAt(0);
int num2 = Integer.parseInt(b.substring(1,3));
if(b.equals(b2)) {
System.out.printf("#%d ERROR",tc);
sign = false;
break out;
}
}
if(c=='S') SDHC[0]--;
else if(c=='D') SDHC[1]--;
else if(c=='H') SDHC[2]--;
else if(c=='C') SDHC[3]--;
}
if(sign==true) {
System.out.printf("#%d ",tc);
for(int i=0;i<SDHC.length;i++) System.out.print(SDHC[i] + " ");
}
System.out.println();
}
}
}
'알고리즘 > SW expert Academy' 카테고리의 다른 글
[SW expert Academy] SWEA 1263번 사람 네트워크2 자바(Java) (0) | 2021.03.25 |
---|---|
[SW expert Academy] SWEA 3307번 최장 증가 부분 수열 자바(Java) (0) | 2021.03.25 |
[SW expert Academy] SWEA 3289번 서로소 집합 자바(Java) (0) | 2021.03.18 |
[SW expert Academy] SWEA 11315번 오목 판정 자바(Java) (0) | 2021.02.24 |
[SW expert Academy] SWEA 6808번 규영이와 인영이의 카드게임 자바(Java) (0) | 2021.02.17 |
[SW expert Academy] SWEA 1984번 중간 평균값 구하기 자바(Java) (0) | 2021.02.17 |
[SW expert Academy] SWEA 5215번 햄버거 다이어트 자바(Java) - 비트마스크 풀이 (0) | 2021.02.17 |
[SW expert Academy] SWEA 1493번 수의 새로운 연산 자바(Java) (0) | 2021.02.16 |
최근댓글