💻STUDY/BOJ

[BOJ] 10996. 별 찍기 - 21 (C)

coldNoodlePigeon 2022. 3. 17.
  • 코딩 초보

10996. 별 찍기 - 21 

 

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

 

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

 

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

 

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

 

10996번: 별 찍기 - 21

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

www.acmicpc.net

 

4
* *
 * *
* *
 * *
* *
 * *
* *
 * *

 

 


#include <stdio.h>

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

	for (int i = 0; i < n; i++) {
		if (n % 2 == 0) {
			for (int a = 0; a < n / 2; a++) {
				printf("* "); 
			}
			printf("\n"); 
			for (int a = 0; a < n / 2; a++) {
				printf(" *");
			}
		}

		else if (n % 2 != 0) {
			for (int b = 0; b < n - (n / 2); b++) {
				printf("* ");
			}
			printf("\n");
			for (int b = 0; b < n / 2; b++) {
				printf(" *");
			}
		}

		printf("\n");
	}
}

짝/홀에 따라 

4=2+2

6=3+3

 

5=3+2

7=4+3 

 

개의 별이 2층으로 찍히므로 짝홀일떄의 케이스를 나눠서 출력하도록 하였다. 

 

코드가 조금 지저분한 것 같아서 좋은 코드를 찾아보았다. 

이 밑은 백준 qkrclrl701 님의 코드이다. (https://www.acmicpc.net/source/3293517

 

#include<stdio.h>
int main(){
	int n;
	scanf("%d",&n);
	for(int i=0; i<2*n; i++){
		for(int j=0; j<n; j++){
			if((i+j)%2==1){
				printf(" ");
			}
			else{
				printf("*");
			}
		}
		if(i!=2*n-1 && n!=1){
			printf("\n");
		}
	}
}

이 분의 코드는 첫번째 줄에는 0,2,4번쨰의 칸에 "*"을 출력하고, 홀수번쨰 칸에는 " "을 출력하도록 하여, 

총 2*n개의 줄을 출력하도록 이중 for문을 구현하셨다. 더 간결하고 좋은 코드이다. 공부가 많이 되었다! 

'💻STUDY > BOJ' 카테고리의 다른 글

[BOJ] 1120.문자열 (C++)  (0) 2022.04.28
[BOJ] 17608. 막대기 (Python)  (0) 2022.03.22
[BOJ] 13458. 시험 감독 (C)  (0) 2022.03.16
[BOJ] 2587. 대표값2 (C)  (0) 2022.03.15
[BOJ] 11729. 하노이 탑 이동 순서 (Python)  (0) 2022.03.14

댓글