본문 바로가기

백준 알고리즘

[백준 알고리즘 c언어 2446 별 찍기9번]

728x90

별 찍기 시리즈 9번째.
별 찍기 시리즈에 꽂혀서 무난하게 풀어가던중 9번에서
또 한번 성장한 기분이 들어 글을 적는다.


문제


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

입력


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

출력


첫째 줄부터 2×N-1번째 줄까지 차례대로 별을 출력한다.

예제 입력 1


5

예제 출력 1

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


내가 이번 문제에서 성장한 포인트는 3가지 였다.
소스 코드 정리하기, 가독성 좋게 바꾸기,굳이 변수를 추가
안하고 문제 풀기.

[소스코드]- 정리하기전

#include<stdio.h>

int main()
{

    int n;
    scanf("%d",&n);
    
    int e=1;
    int t=2*n-1;
    for(int i=n;i>0;i--){
    for(int j=1;j<e;j++){
    printf(" ");}
    for(int k=t;k>0;k--){
    printf("*");}
    printf("\n");
    e+=1;
    t-=2;
    }
   
   
    int c=n-2;
    int y=3;
    for(int i=1;i<=n-1;i++){
       for(int j=c;j>0;j--){
       printf(" ");}
         for(int k=0;k<y;k++){
         printf("*");}
         printf("\n"); 
         c-=1;
         y+=2;
    }
    
 
    return 0 ;
    
    

}


[소스코드]-정리후

#include<stdio.h>

int main()
{

    int n;
    scanf("%d",&n);
       
    for(int i=0;i<n;i++){
            for(int j=1;j<i+1;j++){
                    printf(" ");}
            for(int k=2*(n-i)-1;k>0;k--){
                    printf("*");}
    
      printf("\n");   }
     
    for(int i=0;i<n-1;i++){
            for(int j=(n-i)-2;j>0;j--){
                    printf(" ");}
            for(int k=0;k<(i*2)+3;k++){
                    printf("*");}
         
      printf("\n");  }
    
 
    return 0 ;
    
}

후기

아무래도 군대에서 핸드폰 어플로 코딩을 하려다 보니
비쥬얼 스튜디오처럼 자동적으로 케어해주는 기능이 없다.
그래서 최대한 소스코드를 작성할때 깔끔하고 메모리도 줄이고 가독성 좋게 바꾸는 연습을 해보았다.
결과는 대만족! 훨씬 깔끔하다!