끄적끄적 코딩
article thumbnail
Published 2019. 9. 26. 23:30
[C++] 백준 2799번 블라인드 알고리즘

블라인드가 5개의 모양이 있습니다.
이때 각 모양이 몇개가 있는지 출력하는 문제입니다.

블라인드 모양 전부를 비교하지 않고
각줄의 첫번째 글자만 비교했습니다.


#include <iostream>
#include <string>
#include <algorithm>
using namespace std;

int M, N;
int blind[5] = { 0, };
char map[510][510];
string s;

int main(int argc, char *argv[])
{
	cin >> M >> N;

	for (int i = 0; i < M * 5 + 1; ++i) {
		cin >> s;
		for (int j = 0; j < s.length(); ++j) {
			map[i][j] = s[j];
		}
	}

	for (int i = 1; i < M * 5 + 1; i += 5) {
		for (int j = 1; j < N * 5 + 1; j += 5) {
			if (map[i][j] == '.') {
				++blind[0];
			}
			else if (map[i + 1][j] == '.') {
				++blind[1];
			}
			else if (map[i + 2][j] == '.') {
				++blind[2];
			}
			else if (map[i + 3][j] == '.') {
				++blind[3];
			}
			else {
				++blind[4];
			}
		}
	}

	for (int i = 0; i < 5; ++i) {
		cout << blind[i] << " ";
	}
	cout << endl;

	return 0;
}

검색 태그