[java] SWEA - 단순 2진 암호코드

세상을 바꾸는 개발자·2023년 5월 13일
0

[문제링크 - SWEA - 단순 2진 암호코드] https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV15FZuqAL4CFAYD

  • 문제를 이해하기가 어려웠다. 주어지는 배열의 길이가 56일 거라 생각했는데, 이차원 배열이 N, M으로 주어졌다.
  • 주어진 숫자에 대한 2진 코드를 보면 모두 1로 끝나는 것을 볼 수 있다.
  • 이차원 배열 N, M 에서 1인 곳이 암호코드가 있는 마지막 지점이다.
  • 그 지점으로 부터 -55를 하면 암호코드의 시작점이 나온다.
  • 7개씩 잘라서 비교하여 답을 구하였다.
package test1240;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.StringTokenizer;
import java.io.InputStreamReader;

public class Solution {
	public static void main(String[] args) throws IOException {
		//BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		BufferedReader br = new BufferedReader(new FileReader("input1240.txt"));
		StringBuilder sb = new StringBuilder();
		StringTokenizer st;
		int T = Integer.parseInt(br.readLine());
		for(int t=1; t<=T; t++) {
			st = new StringTokenizer(br.readLine());
			int N = Integer.parseInt(st.nextToken());
			int M = Integer.parseInt(st.nextToken());
			
			int[] pw = new int[8];
			for(int i=0; i<N; i++) {
				String str = br.readLine();
				for(int j=M-1; j>=0; j--) {
					if(str.charAt(j) == '1') {
						int index = 0;
						for(int k=j-55; k<=j; k+=7) {
							pw[index++] = convertCode(str.substring(k, k+7));
						}
						break;
					}
				}
			}
			
			int sum1 = 0;
			int sum2 = 0;
			for(int i=0; i<8; i++) {
				if(i%2==0) {
					sum1 += pw[i];
				}
				else
					sum2 += pw[i];
			}
			
			if((sum1*3 + sum2) % 10 == 0)
				sb.append("#" + t + " " + (sum1+sum2) + "\n");
			else
				sb.append("#" + t + " " + 0 + "\n");
		}
		System.out.println(sb);
	}
	
	public static int convertCode(String str) {
		switch(str) {
		case "0001101" :
			return 0;
		case "0011001" :
			return 1;
		case "0010011" :
			return 2;
		case "0111101" :
			return 3;
		case "0100011" :
			return 4;
		case "0110001" :
			return 5;
		case "0101111" :
			return 6;
		case "0111011" :
			return 7;
		case "0110111" :
			return 8;
		case "0001011" :
			return 9;
		}
		return -1;
	}
}
profile
초심 잃지 않기

0개의 댓글

관련 채용 정보