[BOJ] 백준 #11507. 카드셋트 (C++)
🎨 문제

문제 링크: https://www.acmicpc.net/problem/11507
- 알고리즘 분류: 문자열 처리
- 난이도: Silver Ⅳ
💬 풀이
- while문을 돌면서 문자열 세 자씩 끊어 읽기 ― scanf()의 리턴값이 입력받은 개수임을 이용.
- chk[4][13] 배열을 이용해 똑같은 카드가 존재하는지 확인
👩💻 코드
C++
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <iostream>
#include <string>
using namespace std;
int main() {
//freopen("input.txt", "rt", stdin);
string input;
char c;
int a, b;
int n;
bool chk[4][13] = { false };
int cnt[4] = { 0 };
while (scanf("%c%1d%1d", &c, &a, &b) == 3) {
n = 10 * a + b;
int shape;
switch (c) {
case 'P': shape = 0; break;
case 'K': shape = 1; break;
case 'H': shape = 2; break;
case 'T': shape = 3; break;
}
if (chk[shape][n - 1]) {
cout << "GRESKA" << endl;
return 0;
}
chk[shape][n - 1] = true;
++cnt[shape];
}
for (int i = 0; i < 4; i++) {
cout << 13 - cnt[i] << ' ';
}
return 0;
}
댓글남기기