프로그래밍 알고리즘

[정올 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;
}
반응형

'프로그래밍 알고리즘' 카테고리의 다른 글

[정올 1262] 긴 자리 곱셈  (0) 2023.01.03
[정올 1240] 제곱근  (0) 2023.01.02
[정올 1214] 히스토그램  (1) 2022.12.31
[정올 1183] 동전자판기(하)  (0) 2022.12.31
[정올 1175] 주사위던지기2  (0) 2022.12.31