본문 바로가기

programming/알고리즘 풀이

[백준 알고리즘] 10996번 - 별 찍기 21

반응형

1. 문제, 실행결과 예시

 

 그 전에 풀었던 문제(2523번, 2446번) 들에 비하면, 나름 쉽게 풀었다고 생각한다. 규칙이 여렵다기보단, 어떤 방식으로 해결하는지가 더 중요한 문제였다고 생각한다. 다음은 문제 안내와 실행결과 예시이다.

 

출처: https://www.acmicpc.net/problem/10996

 

10996번: 별 찍기 - 21

예제를 보고 규칙을 유추한 뒤에 별을 찍어 보세요.

www.acmicpc.net


10996번


 이걸 공백을 출력하고, 별을 출력하는 방식을 선택할 수 있겠지만, 두줄을 하나의 덩어리로 취급하고, 윗줄 아랫줄의 출력 갯수를 정하면 된다. 다음은 풀이 과정이다.

 

2. 문제 풀이

 

 규칙은 나름 쉽다. 일단 입력되는 값이 input이라고 했을 때, input * 2이 출력되는 줄의 값이고, 이를 input개의 덩어리로 볼 수 있다. 윗줄은 별이 출력되고 공백이 출력되며, 아랫줄은 공백이 출력되고, 별이 출력된다. 이걸 반복해서 출력할 수 있겠지만, 간단하게 printf("* ") 과, printf(" *") 으로 구현해주면 훨씬 간단하다. 다음은 소스 코드이다.

 

#include <stdio.h>

int main(void) {
	int input;
	scanf("%d", &input);

	int down = input - (input / 2);
	int up = input / 2;
	
	if (input != 1)
		input = input * 2;

	for (int i = 0; i < input; i++) {
		if (i % 2) {
			for (int j = 0; j < up; j++)
				printf(" *");
		}
		else {
			for (int j = 0; j < down; j++)
				printf("* ");
		}
		printf("\n");
	}
	return 0;
}

 

 

3. 결어

 

 이렇게 단계별로 풀기 실습 1이 마무리 되었다. 다음은 배열에 관한 문제들을 올릴 것이다.

반응형