상세 컨텐츠

본문 제목

[백준 - 브3] 2441번 별 찍기 C언어

알고리즘/C

by 셉인 2022. 9. 3. 23:59

본문

728x90

2441번: 별 찍기 - 4 (acmicpc.net)

 

2441번: 별 찍기 - 4

첫째 줄에는 별 N개, 둘째 줄에는 별 N-1개, ..., N번째 줄에는 별 1개를 찍는 문제 하지만, 오른쪽을 기준으로 정렬한 별(예제 참고)을 출력하시오.

www.acmicpc.net

#include <stdio.h>

int main() {
    int N = 0;
    int j = 0;
    int k = 0;
    scanf("%d", &N);
    for (int i = 0; i < N; i++)
    {

        for (j = N; j > N-i; j--)
        {
            
            printf(" ");
        }
        
        for (k=N-i; k > 0; k--)
        {
            printf("*");
        }

        printf("\n");
    }

    return 0;
}

< 코드 해석>

생각보다 더 헷갈린 문제였따.. 

 

이중 포문을 사용을해서 5번 5줄을 이용하는 문제이다.

1 공백을 출력을 해줘야하는데 공백은 0개 ~ 4개까지 출력을 해줘야한다.

그런데 계속 원한는 출력이 안나왔다.

공백이 5개씩만 나오거나 아예출력이 안되거나 4321순으로 출력되는 난리가 났었다.

하지만 N-i를 해준 이유가 있다

N은 5로 값이 고정이고 처음에 j에게 N의 값을 넣어줬으니 5==5해서 공백이 출력이 안된다. 그다음에는 i의 값이 1증가해서 N-i이 4니깐 5>4로 한 번 공백이 출력된다. 그다음에 j값이 후위 연산자로 1줄어서 4로 되니 4==4 로 공백이 안나온다. 이렇게 하니 원하는 결과를 얻을 수 있었다. 

 

2 *을 넣어주는 것은 생각보다 단순해서 금방해결했다. 공백이 힘들었다..

j와 반대로 해주었다 k는.. 

지금 생각해보면 j와 k가 반대일텐데 그것을 캐치하지 못했다

그래도 잘 마무리했다~^^

 

더 좋은 방식이 있으면 알려주시면 감사합니다 

 

백준 2441 별 찍기 -4<실패> (tistory.com)

 

백준 2441 별 찍기 -4<실패>

<실패한 코드> => 추후에 재도전을 위한 기록 #include int main() { int N=0; int i=0; scanf("%d",&N); if(N>=1&&N<=100){ while(N!=0){ for(int a=0; a printf(" "); } for(i; i printf("*"); } --N; ++i; pri..

sebbb-in.tistory.com

실패 -> 성공

728x90

관련글 더보기

댓글 영역