이진수로 이루어진 암호들로 어떤 단어가 나올지 출력하면 됩니다.
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);
}
}
'알고리즘' 카테고리의 다른 글
[Java] 백준 14502번 연구소 (0) | 2023.01.26 |
---|---|
[Java] 백준 14501번 퇴사 (0) | 2023.01.25 |
[Java] 백준 15683번 감시 (0) | 2023.01.24 |
[Java] 백준 17478번 재귀함수가 뭔가요? (0) | 2023.01.24 |
[Java] 백준 2784번 가로 세로 퍼즐 (0) | 2023.01.24 |