💻STUDY/BOJ
[BOJ] 10996. 별 찍기 - 21 (C)
- 코딩 초보
10996. 별 찍기 - 21
예제를 보고 규칙을 유추한 뒤에 별을 찍어 보세요.
첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다.
첫째 줄부터 차례대로 별을 출력한다.
https://www.acmicpc.net/problem/10996
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 |
댓글