본문 바로가기

백준 문제 정리

백준 2439 별 찍기 - 2 (C언어)

문제 링크: https://www.acmicpc.net/problem/2439

 

2439번: 별 찍기 - 2

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

www.acmicpc.net

1. 필요한 생각

  • 단순히 별찍기가 아니다 오른쪽으로 정렬된 별찍기임을 생각하고
  • 공백이 내려갈 수록 한칸씩 빠지는 반면, 별은 내려갈 수록 한개씩 증가됨을 생각하자

2. 코드로 이해

#include <stdio.h>

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

  for(int i=0 ; i<N ; i++) // 줄의 갯수 for문
  {
    for(int j=i+1 ; j<N ; j++) 
		// i+1 인 이유는 만약 5개 입력시 첫번째 줄에는 공백 4개가 입력되기 때문
      printf(" ");

    for(int k=0 ; k<=i ; k++)
		// 가장 위의 for문에 영향을 받음 첫째줄의 경우 별 1개, 둘째줄의 경우 별2개...
      printf("*");
		

    printf("\\n");
  }
  return 0;
}

3. 느낀점

  • 사실 처음에 오른쪽 정렬을 어떻게 처리해야할지 감이 잘 안잡혔다.
  • 하지만, 공백이 줄어드는 만큼 별의 갯수가 증가된다는 생각을 가지고 접근하니 비교적 쉽게 해결 되었다.