새소식

💻 Programming (프로그래밍)/C++ | 백준

[C++][백준] - 찍기 (2966번)

  • -
https://www.acmicpc.net/problem/2966
 

2966번: 찍기

상근이, 창영이, 현진이는 역사와 전통을 자랑하는 Sogang ACM-ICPC Team에 가입하려고 한다. 하지만, 가입하려고 하는 모든 지원자는 C언어 필기시험을 통과해야 한다. 이들은 C언어를 할 줄 모른다.

www.acmicpc.net

🔔 문제 : 

상근이는 A,B,C 순서로

창영이는 B,A,B,C 순서로

현진이는 C,C,A,A,B,B, 순서로 정답을 찍습니다.

 

필기시험의 정답이 (1<= N <= 100) N개 주어질 때, 

 

정답을 가장 많이 맞춘 갯수와, 

그 사람의 아이디를 출력합니다 (중복일 경우, 상근 창영 현진 순서대로 출력해줍니다.)

 

상근 ID = Adrian

창영 ID = Bruno

현진 ID = Goran


🔔 Kick Point :

 

나머지 연산자인 '%' 를 사용하여 몇개를 맞췄는지 구하는 문제입니다.


🔔 Code :

#include <iostream>
using namespace std;

int main() {
	char a[3] = { 'A', 'B', 'C' };
	char b[4] = { 'B', 'A', 'B', 'C'};
	char c[6] = { 'C', 'C', 'A', 'A', 'B', 'B'};

	int score[3] = {0,0,0};

	int n; cin >> n;
	for (int i = 0; i < n; i++) {
		char tmp; cin >> tmp;
		if (a[i % 3] == tmp) score[0]++;
		if (b[i % 4] == tmp) score[1]++;
		if (c[i % 6] == tmp) score[2]++;
	}

	int Max(0);
	for (int i = 0; i < 3; i++) {
		Max = score[i] > Max ? score[i] : Max;
	}

	cout << Max << endl;
	if (Max == score[0]) cout << "Adrian" << endl;
	if (Max == score[1]) cout << "Bruno" << endl;
	if (Max == score[2]) cout << "Goran" << endl;

}

 

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.