[정올] Beginner_Coder_도형만들기1_구구단_code1291 (C)

두비니

·

2020. 11. 29. 05:18

 

 

 

 

#include <stdio.h>

int main(){
	int s, e;
	int flag;
	while (1) {
		scanf("%d %d", &s, &e);
		if ((2 <= s && s <= 9) && (2 <= e && e <= 9)) {
			break;
		}
		printf("INPUT ERROR!\n");
	}

	if (s > e)
		flag = -1;
	else if (s == e)
		flag = 0;
	else 
		flag = 1;
	
	for (int i = 1; i < 10; i++) {
		int k = s;
		do {
			printf("%d * %d = %2d   ", k, i, k * i);
			k += flag;
		} while (k != e);
		if( flag != 0)
			printf("%d * %d = %2d", e, i, e * i);
		
		printf("\n");
	}
}

 

 

어떻게든 코드를 늘리지 않겠다는 나의 으지,,

 

+) 모르는 분들을 위한 설명

우선 이 문제가 까다로운 이유는 증가/감소를 둘 다 고려해야 한다는 점입니다.

당연히 if else문으로 길게 짜도 상관은 없다만 저는 죽어도 코드가 길어지는게 싫은 사람이라 case에 따라서 flag를 설정해주고, 그에 따른 do while문을 작성하였습니다. for문으로 작성해도 상관 없습니다. 저기 마지막에 if( flag != 0 )은 같은 숫자(ex. 3 3)을 넣었을 때 2번 출력돼서 어거지로 집어넣은 코드입니다.

 

끝!