복잡해 보이지만 쉬운 문제다.
이 문제 또한 입력이 많지만 이러한 입력만 잘 넣게 되면 어렵지 않다.
#include <iostream>
#include <stdio.h>
using namespace std;
int code[10][7] = {
{0,0,0,1,1,0,1},
{0,0,1,1,0,0,1},
{0,0,1,0,0,1,1},
{0,1,1,1,1,0,1},
{0,1,0,0,0,1,1},
{0,1,1,0,0,0,1},
{0,1,0,1,1,1,1},
{0,1,1,1,0,1,1},
{0,1,1,0,1,1,1},
{0,0,0,1,0,1,1}
};
int N, M;
int arr[50][100];
int codeBit[56];
int codeNum[8];
int res;
int main() {
int test_case;
int T;
cin >> T;
for (test_case = 1; test_case <= T; test_case++) {
res = 0;
cin >> N >> M;
for (int i = 0; i < N; i++)
for (int j = 0; j < M; j++)
scanf("%1d", &arr[i][j]);
bool codeFind = false;
for (int i = 0; i < N; i++)
{
for (int j = M - 1; j >= 0; j--)
if (arr[i][j] == 1)
{
codeFind = true;
for (int k = 0; k < 56; k++)
codeBit[k] = arr[i][j - 55 + k];
break;
}
if (codeFind)
break;
}
for (int i = 0; i < 8; i++)
for (int k = 0; k < 10; k++)
{
bool isSame = true;
for (int j = 0; j < 7; j++)
if (codeBit[(i * 7) + j] != code[k][j])
{
isSame = false;
break;
}
if (isSame)
{
codeNum[i] = k;
break;
}
}
int sum = (codeNum[0] + codeNum[2] + codeNum[4] + codeNum[6]) * 3 + codeNum[1] + codeNum[3] + codeNum[5] + codeNum[7];
if (sum % 10 == 0)
for (int i = 0; i < 8; i++)
res += codeNum[i];
cout << "#" << test_case << " " << res << "\n";
}
}
'Coding_Test 연습 > SWEA' 카테고리의 다른 글
[SWEA] (C++) D4 7829 보물왕 태혁 (0) | 2022.04.11 |
---|---|
[SWEA] (C++) D3 1244 최대 상금 (0) | 2022.04.11 |
[SWEA] (C++) D3 1234 비밀번호 (0) | 2022.04.11 |
[SWEA] (C++) D3 1230 암호문3 (0) | 2022.04.11 |
[SWEA] (C++) D3 1229 암호문2 (0) | 2022.04.11 |