프로그래밍 알고리즘
[정올 1239] 비밀편지
꾸준한사람
2023. 1. 2. 22:27
반응형
http://www.jungol.co.kr/bbs/board.php?bo_table=pbank&code=1239&sca=99
JUNGOL
www.jungol.co.kr
#include <stdio.h>
//각 문자의 암호, Letter[0]은 C[0]='A'와 대응됨
int Letter[8][6] = { {0,0,0,0,0,0}, {0,0,1,1,1,1}, {0,1,0,0,1,1}, {0,1,1,1,0,0},
{1,0,0,1,1,0}, {1,0,1,0,0,1}, {1,1,0,1,0,1}, {1,1,1,0,1,0} };
//각 문자
char C[8] = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H' };
char Ans[10];
int N, tmp[6], cnt;
int GetC() {
int failcnt;
for (int i = 0; i < 8; i++) {
failcnt = 0;
for (int j = 0; j < 6; j++) {
if (Letter[i][j] != tmp[j]) failcnt++;
if (failcnt >= 2) break; //암호가 2개 이상 틀리면 실패
}
if (failcnt <= 1) return i; //암호 1개만 틀리면 그 복원가능
}
return -1;
}
int main(void)
{
scanf("%d ", &N);
int idx, failidx = -1;
for (int i = 0; i < N; i++) {
for (int j = 0; j < 6; j++) scanf("%1d", &tmp[j]);
idx = GetC(); //암호 6자를 받아서 어떤 문자인지 알아냄
if (idx == -1) { failidx = i + 1; break; } //실패하면 문자의 번호 출력
else Ans[cnt++] = C[idx];
}
if (failidx != -1) printf("%d", failidx);
else printf("%s", Ans);
return 0;
}
반응형