끄적끄적 코딩
article thumbnail

이진수로 이루어진 암호들로 어떤 단어가 나올지 출력하면 됩니다.
6자리의 이진수는 하나의 글자를 가르킵니다. 
6자리 중 하나의 숫자가 틀려도 해당 글자로 인식합니다.
2개 이상 틀릴경우 판단할 수 없으므로 틀린 위치의 번호를 출력해주었습니다.

비트 연산을 통해서 이진수를 처리해주었습니다.

import java.util.Scanner;

public class Main {
	public static void main(String[] args){
		Scanner sc = new Scanner(System.in);
		int[][] arr = new int[8][7];
		int n = sc.nextInt();
		String s = sc.next();
		String ans = "";
		char c;
		int bit;
		boolean chk;
		
		arr[0][0] = 0B000000;
		arr[1][0] = 0B001111;
		arr[2][0] = 0B010011;
		arr[3][0] = 0B011100;
		arr[4][0] = 0B100110;
		arr[5][0] = 0B101001;
		arr[6][0] = 0B110101;
		arr[7][0] = 0B111010;
		
		for(int i=0; i<8; ++i) {
			for(int j=1; j<=6; ++j) {
				arr[i][j] = (arr[i][0] ^ (1 << j - 1));
			}
		}
		
		for(int i=0; i<n; ++i) {
			bit = 0;
			for(int j=0; j<6; ++j) {
				if(s.charAt(i*6 + j) - '0' == 1) {
					bit = bit | (1 << 5-j);
				}
			}
			chk = false;
			for(int j=0; j<8; ++j) {
				if(chk) {
					break;
				}
				for(int k=0; k<=6; ++k) {
					if(arr[j][k] == bit) {
						c = (char) ('A' + j);
						ans += c;
						chk = true;
						break;
					}
				}
			}
			if(!chk) {
				System.out.printf("%d%n", i+1);
				return;
			}
		}
		System.out.printf("%s%n", ans);
	}
}

검색 태그