[백준 BOJ] 2441번 별 찍기 - 4 (C언어)

2022. 1. 17. 13:35PS (Program Solving)/BOJ (백준)

문제 설명

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

 

2441번: 별 찍기 - 4

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

www.acmicpc.net

백준 BOJ 2441번 별 찍기-4 문제 사진

 

접근 방법 - 이중 반복문을 이용한 기본 문제 (별 찍기-2 문제의 변형)

백준의 2441번 문제는 이중 반복문을 응용하는 문제이며, 이는 별 찍기-1 문제의 변형 문제이기도 하다.

하지만 이 문제는, 별 찍기-1 문제보다 별 찍기-2 문제와의 연관성이 더 깊기 때문에 이 문제의 링크를 아래에 기재해놓았다.

아래 링크에 별 찍기-1 문제의 링크가 기재되어있으니, 이 또한 함께 참고해보길 바란다.

https://smary-it.tistory.com/24

 

[백준 BOJ] 2439번 별 찍기 - 2 (C언어)

문제 설명 https://www.acmicpc.net/problem/2439 2439번: 별 찍기 - 2 첫째 줄에는 별 1개, 둘째 줄에는 별 2개, N번째 줄에는 별 N개를 찍는 문제 하지만, 오른쪽을 기준으로 정렬한 별(예제 참고)을 출력하시

smary-it.tistory.com

 

위의 2439번 문제와 차이점이 있다면, 공백 출력은 감안하되 별의 출력이 역순이라는 점이다.

따라서, 2439번 문제를 해결했다면 제출한 코드를 살짝 변형만 해서 풀어보아도 무관할 것이다.

다만 필자는 반복문을 분할해서 공백과 별 출력을 따로 해보는 방식으로 문제를 해결해보았다.

필자는 아래처럼 코드를 작성하고 문제를 해결하였다.

 

코드의 실행 순서

1) 숫자(n)를 입력받는다.

 

2) 이중 반복문을 실행한다. (i: 행, j: 열)

행 번호 i를 제어하는 반복문 안에 공백을 출력하는 반복문, 별을 출력하는 반복문 2개를 순차적으로 작성한다.

- 공백을 출력하는 반복문: 열 번호 j는 0에서부터 i-1까지 점점 증가하는 변수이며, 그 과정에서 출력을 하나씩 출력한다.

- 별을 출력하는 반복문: 열 번호 j는 n-i에서부터 1까지 점점 감소하는 변수이며, 그 과정에서 별을 하나씩 출력한다.

(공백은 처음엔 0개 출력했다가, 행을 거듭하면서 출력하는 횟수를 1씩 늘린다.)

(반면에 별은 처음엔 n개 출력했다가, 행을 거듭하면서 출력하는 횟수를 1씩 줄인다.)

=> 이 과정을, 행 번호 i가 n과 같아지기 직전까지 실행한다.

 

3) 이중 반복문이 모두 수행되면, 실행 종료한다.

반응형

 

성공한 코드

#define _CRT_SECURE_NO_WARNINGS
#pragma warning(disable: 4996)
#include <stdio.h>

//백준 2441번 코드
int main() {
	int n;
	scanf("%d", &n);

	for (int i = 0; i < n; i++) {
		for (int j = 0; j < i; j++) {
			printf(" ");
		}
		for (int j = n - i; j > 0; j--) {
			printf("*");
		}
		printf("\n");
	}
}

 

제출 결과

백준 BOJ 2441번 별 찍기-4 문제 C 제출 결과

(2021.12.21 백준 2441번 문제 제출 결과)

반응형