import java.io.*;
import java.util.*;
public class Solution {
static int[][] map = new int [2000][2000];
static int hcode[][] = {
{ 0, 0, 0, 0 },
{ 0, 0, 0, 1 },
{ 0, 0, 1, 0 },
{ 0, 0, 1, 1 },
{ 0, 1, 0, 0 },
{ 0, 1, 0, 1 },
{ 0, 1, 1, 0 },
{ 0, 1, 1, 1 },
{ 1, 0, 0, 0 },
{ 1, 0, 0, 1 },
{ 1, 0, 1, 0 },
{ 1, 0, 1, 1 },
{ 1, 1, 0, 0 },
{ 1, 1, 0, 1 },
{ 1, 1, 1, 0 },
{ 1, 1, 1, 1 }};
static int [][][] scode = new int [4][3][4];
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine(), "");
int TC = Integer.parseInt(st.nextToken());
scode[1][0][0] = 0;
scode[1][1][0] = 1;
scode[0][1][1] = 2;
scode[3][0][0] = 3;
scode[0][2][1] = 4;
scode[1][2][0] = 5;
scode[0][0][3] = 6;
scode[2][0][1] = 7;
scode[1][0][2] = 8;
scode[0][0][1] = 9;
for(int tc = 1; tc <= TC; tc++) {
int N, M;
int ans = 0;
st = new StringTokenizer(br.readLine(), " ");
N = Integer.parseInt(st.nextToken());
M = Integer.parseInt(st.nextToken());
for (int i = 0; i < N; i++) {
st = new StringTokenizer(br.readLine(), "");
String line = st.nextToken();
for (int j = 0; j < M; j++) {
int t = line.charAt(j);
if (t <= '9') t = t - '0';
else t = t - 'A' + 10;
for (int k = 0; k < 4; k++) {
map[i][j * 4 + k] = hcode[t][k];
}
}
}
int codei = 7;
int [] code = new int [8];
for (int i = 1; i < N; i++) {
for (int j = M * 4 - 1; j >= 0; j--) {
if (map[i][j] == 1 && map[i - 1][j] == 0) {
int x, y, z;
x = y = z = 0;
while (map[i][j] == 1) {
z++;
j--;
}
while (map[i][j] == 0) {
y++;
j--;
}
while (map[i][j] == 1) {
x++;
j--;
}
while (map[i][j] == 1) {
j--;
}
j++;
int min = Math.min(Math.min(x, y), z);
x /= min;
y /= min;
z /= min;
code[codei--] = scode[x - 1][y - 1][z - 1];
if (codei == -1) {
int t = (code[0] + code[2] + code[4] + code[6]) * 3 + code[1] + code[3] + code[5] + code[7];
if (t % 10 == 0)
ans += code[0] + code[2] + code[4] + code[6] + code[1] + code[3] + code[5] + code[7];
codei = 7;
}
}
}
}
System.out.printf("#%d %d\n", tc, ans);
}
}
}
기존에 풀었던 Python 코드를 Java 코드로 옮기려했지만 실패하였다.
그래서 여러 사람들의 코드중 가독성이 좋은jihoon76.lee
님의 코드로 해결하였다.
이 문제를 푸는데 너무 시간을 허비하여 다음에 다시 풀어서 제 코드로 포스팅하겠습니다.