본문 바로가기
⌨️CS-PS/백준_수학&구현

[Baekjoon/백준][10996][C/C++] 별 찍기 - 21

by 미르의 블로그 2023. 1. 25.
728x90
반응형
『목차』
0. 개요

1. 문제
2. 풀이
3. 코드

0. 개요

백준에는 별 찍기 문제가 정말 많다. 아직까지는 21번 문제가 별찍기의 마지막인 것 같다.

1. 문제

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

 

10996번: 별 찍기 - 21

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

www.acmicpc.net

[문제]

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

[입력]

첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다.

[출력]

첫째 줄부터 차례대로 별을 출력한다.

[예제 입력 1]

1

[예제 출력 1]

*

[예제 입력 2]

2

[예제 출력 2]

*
 *
*
 *

[예제 입력 3]

3

[예제 출력 3]

* *
 *
* *
 *
* *
 *

[예제 입력 4]

4

[예제 출력 4]

* *
 * *
* *
 * *
* *
 * *
* *
 * *

2. 풀이

' '(공백)과 '\n'(개행)이 각각의 행과 열의 출력에 반영되어도 정답으로 인정되어 쉽게 풀 수 있었던 문제이다.

 

행의 경우

*(별) -> ' '(공백) -> *(별) -> ' '(공백) -> ...

' '(공백) -> *(별) -> ' '(공백) -> *(별) -> ...

의 순서대로 (입력값)의 크기에 해당하는 개수만 표시되고,

 

열의 경우

(입력값) * 2 의 개수만큼 표시된다.

 

[짝수 세로 index, 짝수 가로 index] 와 [홀수 세로 index, 홀수 가로 index] 에는 *(별) 이 표시되고,

[홀수 세로 index, 짝수 가로 index] 와 [짝수 세로 index, 홀수 가로 index] 에는 ' '(공백) 이 표시된다는 점을 이용하였다.

3. 코드

#pragma warning(disable:4996)
#include <stdio.h>

int main(int argc, char* argv[]) {
	int N; scanf("%d", &N);

	for (int i = 0; i < N * 2; i++) {
		for (int j = 0; j < N; j++) {
			if ((i + j) % 2 == 0) //짝수 + 짝수 = 홀수 + 홀수 = 짝수
				printf("*");
			else if ((i + j) % 2 == 1) //홀수 + 짝수 = 홀수
				printf(" ");
		}
		printf("\n");
	}

	return 0;
}
728x90
반응형