본문 바로가기

Contact English

【코딩】 C 언어로 CPS Festival 6번 문항 풀기

 

C 언어로 CPS Festival 6번 문항 풀기

 

추천글 : 【C 언어】 C 언어 목차


Q. 다음과 같은 주사위 4개가 있다. 단, 주사위 위에는 Q와 V를 제외한 대문자 알파벳이 쓰여있고, 어떤 두 주사위도 공통된 문자가 나타나지 않는다.

 

위 주사위로 다음과 같은 단어를 만들었다고 한다.

BOXY, BUCK, CHAW, DIGS, EXAM, FLIT, GIRL, JUMP, OGRE, OKAY, PAWN, ZEST

이때 각 알파벳이 어떤 주사위에 들어가는지 구하라.

Solution.

아래 코드는 나머지 알파벳에 대한 모든 경우를 따져준 것이다. 각 배열에 저장된 값은 그 알파벳이 몇 번 주사위에 놓이는지이다. 코드를 실행시키면 8가지 결과가 나온다. (클릭해서 확인 바람)

1: (×)

2(O)

3(×)

4(×)

5(×)

6(×)

7(×)

8(×)

이때 O, ×를 판단하는 기준은 오직 각 알파벳이 6개씩 나뉘어 배치됐나의 여부였다. 이처럼 문제의 모든 조건을 쓰지 않아도 풀리는 문제였다. 2번 케이스가 정답인지 아닌지에 대해서는 별도의 검토를 해보길 바란다.

 

 

 

#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
	int a[24], i, j;
	a[0]=3; // A in the 3rd dice
	a[1]=3; // B in the 3rd dice
	a[2]=4; // C in the 4th dice
	a[4]=1; // E in the 1st dice
	a[7]=2; // H in the 2nd dice
	a[9]=3; // J in the 3rd dice
	a[10]=2; // K in the 2nd dice
	a[12]=4; // M in the 4th dice (by EXAM)
	a[13]=4; // N in the 4th dice
	a[14]=4; // O in the 4th dice
	a[15]=2; // P in the 2nd dice
	a[19]=1; // U in the 1st dice
	a[20]=1; // W in the 1st dice (by CHAW)
	a[21]=2; // X in the 2nd dice (by BOXY)
	a[22]=1; // Y in the 1st dice

	for(a[3]=1; a[3]<5 ;a[3]++){ // D in all dices
	for(a[5]=1; a[5]<5; a[5]++){ // F in all dices
	for(a[6]=2; a[6]<4; a[6]++){ // G in all dices but 1st dice, 4th dice (cf. OGRE)
	for(a[8]=1; a[8]<5; a[8]++){ // I in all dices
	for(a[11]=1; a[11]<5; a[11]++){ // L in all dices
	for(a[16]=2; a[16]<4; a[16]++){ // R in all dices but 1st dice, 4th dice (cf. OGRE)
	for(a[17]=2; a[17]<5; a[17]++){ // S in all dices but 1st dice (cf. ZEST)
	for(a[18]=2; a[18]<5; a[18]++){ // T in all dices but 1st dice (cf. ZEST)
	for(a[23]=2; a[23]<5; a[23]++){ // Z in all dices but 1st dice (cf. ZEST)
		if(a[3]!=a[8] && a[3]!=a[6] && a[3]!=a[17] && a[8]!=a[6] && a[8]!=a[17] && a[6]!=a[17]){
		/* condition: DIGS */
		if(a[5]!=a[11] && a[5]!=a[8] && a[5]!=a[18] && a[11]!=a[8] && a[11]!=a[18] && a[8]!=a[18]){
		/* condition: FLIT */
		if(a[6]!=a[8] && a[6]!=a[16] && a[6]!=a[11] && a[8]!=a[16] && a[8]!=a[11] && a[16]!=a[11]){
		/* condition: GIRL */
		if(a[14]!=a[6] && a[14]!=a[16] && a[14]!=a[4] && a[6]!=a[16] && a[6]!=a[4] && a[16]!=a[4]){
		/* condition: OGRE */
		if(a[23]!=a[4] && a[23]!=a[17] && a[23]!=a[18] && a[4]!=a[17] && a[4]!=a[18] && a[17]!=a[18]){
		/* condition: ZEST */
			for(j=0; j<24; j++) printf("%d", a[j]); printf("\n");}}}}}}}}}}}}}}
	return 0;
}

 

입력: 2013.09.24 16:22