문제 : https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV15FZuqAL4CFAYD
코드 :
#include <iostream>
#include <vector>
#include <limits>
//#include <cstdlib>
#include <stdio.h>
using namespace std;
int num[50][100] = { 0 };
int v0[7] = { 0,0,0,1,1,0,1 };
int v1[7] = { 0,0,1,1,0,0,1 };
int v2[7] = { 0,0,1,0,0,1,1 };
int v3[7] = { 0,1,1,1,1,0,1 };
int v4[7] = { 0,1,0,0,0,1,1 };
int v5[7] = { 0,1,1,0,0,0,1 };
int v6[7] = { 0,1,0,1,1,1,1 };
int v7[7] = { 0,1,1,1,0,1,1 };
int v8[7] = { 0,1,1,0,1,1,1 };
int v9[7] = { 0,0,0,1,0,1,1 };
vector<int*> arr;
int result = INT32_MAX;
void calc(int* v)
{
int total = 0;
int sum = 0;
//홀수 합
for (int i = 0; i < 7; i += 2)
{
sum += v[i];
total += v[i];
}
sum *= 3;
//짝수 합
for (int i = 1; i < 7; i += 2)
{
sum += v[i];
total += v[i];
}
if ((sum + v[7]) % 10 == 0)
{
total += v[7];
if (result > total)
{
result = total;
}
}
}
void solution(int si, int sj, int n, int m)
{
for (int i = 1; i <= 3; i++) // 1앞에 0이 올 경우
{
int v[8] = { 0 };
int vi = 0;
for (int j = sj - i; j < m; j += 7) // 가로 7자리씩 재단
{
bool check;
for (size_t c = 0; c < arr.size(); c++) // 0~9까지 숫자
{
check = true;
for (int k = 0; k < 7; k++) // 7자리 확인
{
if (arr[c][k] != num[si][j + k])
{
check = false;
break;
}
}
if (check)
{
v[vi++] = c; // 암호값 저장
break;
}
}
}
if (vi == 8) // 정상적으로 다 들어갔다고 판단
{
calc(v);
}
}
}
int main()
{
int T;
cin >> T;
arr.push_back(v0);
arr.push_back(v1);
arr.push_back(v2);
arr.push_back(v3);
arr.push_back(v4);
arr.push_back(v5);
arr.push_back(v6);
arr.push_back(v7);
arr.push_back(v8);
arr.push_back(v9);
int t = 0;
while (t < T)
{
int N, M;
cin >> N >> M;
bool check = true;
int index_i = 0;
int index_j = 0;
result = INT32_MAX;
for (int i = 0; i < N; i++)
{
for (int j = 0; j < M; j++)
{
scanf_s("%1d", &num[i][j]);
/*char c;
cin >> c;
num[i][j] = atoi(&c);*/
if (num[i][j] == 1 && check)
{
index_i = i;
index_j = j;
check = false;
}
}
cout << "";
}
solution(index_i, index_j, N, M);
t++;
if (result == INT32_MAX)
{
result = 0;
}
cout << "#" << t << " " << result << "\n";
}
return 0;
}
어렵지는 않는 문제였음.
다만 당황했던건 당연히 입력이 띄어쓰기되서 들어올줄 알았는데 아니여서 잠시 당황했다는...
'algorithm > SW Expert Academy' 카테고리의 다른 글
[모의 SW 역량테스트] 보호 필름 - 2112 (0) | 2020.02.02 |
---|---|
[2차원 배열 연습 문제] 달팽이 숫자 - 1954 (0) | 2020.01.08 |
[2차원 배열 연습 문제] 스도쿠 검증 - 1974 (0) | 2020.01.08 |
[1차원 배열 연습 문제] View - 1206 (0) | 2020.01.08 |
[1차원 배열 연습 문제] 최빈수 구하기 - 1204 (0) | 2020.01.08 |
댓글