1일1알

백준 2082번 시계 C++ 본문

알고리즘

백준 2082번 시계 C++

영춘권의달인 2022. 2. 11. 14:53

출처 : https://www.acmicpc.net/problem/2082

0부터 비교하면서 켜지지 않아야 할 곳에 불이 켜져있으면 넘어가고 모두 꺼져있다면 그 번호로 만들 수 있다.

 

#include <iostream>
#include <string>
#include <vector>
#include <math.h>
#include <algorithm>
#include <utility>
#include <stack>
#include <queue>
#include <math.h>
#include <set>
#include <map>
#include <unordered_map>
#include <unordered_set>
#include <iomanip>

using namespace std;
using ll = long long;

vector<vector<bool>> nums(10, vector<bool>(15, true));
vector<vector<bool>> v(4, vector<bool>(15, true));

void Init() {
	nums[0][4] = false;
	nums[0][7] = false;
	nums[0][10] = false;

	nums[1][0] = false;
	nums[1][1] = false;
	nums[1][3] = false;
	nums[1][4] = false;
	nums[1][6] = false;
	nums[1][7] = false;
	nums[1][9] = false;
	nums[1][10] = false;
	nums[1][12] = false;
	nums[1][13] = false;

	nums[2][3] = false;
	nums[2][4] = false;
	nums[2][10] = false;
	nums[2][11] = false;

	nums[3][3] = false;
	nums[3][4] = false;
	nums[3][9] = false;
	nums[3][10] = false;

	nums[4][1] = false;
	nums[4][4] = false;
	nums[4][9] = false;
	nums[4][10] = false;
	nums[4][12] = false;
	nums[4][13] = false;

	nums[5][4] = false;
	nums[5][5] = false;
	nums[5][9] = false;
	nums[5][10] = false;

	nums[6][4] = false;
	nums[6][5] = false;
	nums[6][10] = false;

	nums[7][3] = false;
	nums[7][4] = false;
	nums[7][6] = false;
	nums[7][7] = false;
	nums[7][9] = false;
	nums[7][10] = false;
	nums[7][12] = false;
	nums[7][13] = false;

	nums[8][4] = false;
	nums[8][10] = false;

	nums[9][4] = false;
	nums[9][9] = false;
	nums[9][10] = false;
}

int main() {
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);

	Init();
	for (int i = 0; i < 5; i++) {
		for (int j = 0; j < 4; j++) {
			string str;
			cin >> str;
			for (int k = 0; k < 3; k++) {
				if (str[k] == '.') {
					v[j][i * 3 + k] = false;
				}
			}
		}
	}
	vector<int> ans(4);
	for (int i = 0; i < 4; i++) {
		for (int j = 0; j < 10; j++) {
			bool isAns = true;
			for (int k = 0; k < 15; k++) {
				if (!nums[j][k]) {
					if (v[i][k]) isAns = false;
				}
			}
			if (isAns) {
				ans[i] = j;
				break;
			}
		}
	}
	for (int i = 0; i < 4; i++) {
		if (i == 2) cout << ":";
		cout << ans[i];
	}
};