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

최대 1 분 소요

🎨 문제

boj-11507

문제 링크: https://www.acmicpc.net/problem/11507

  • 알고리즘 분류: 문자열 처리
  • 난이도: Silver Ⅳ



💬 풀이

  1. while문을 돌면서 문자열 세 자씩 끊어 읽기 ― scanf()의 리턴값이 입력받은 개수임을 이용.
  2. 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;
}


댓글남기기