[백준 BOJ] 2440번 별 찍기 - 3 (C언어)

2022. 1. 16. 01:20PS (Program Solving)/BOJ (백준)

문제 설명

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

 

2440번: 별 찍기 - 3

첫째 줄에는 별 N개, 둘째 줄에는 별 N-1개, ..., N번째 줄에는 별 1개를 찍는 문제

www.acmicpc.net

백준 BOJ 2440번 별 찍기-3 문제 사진

 

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

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

이런 문제에 아직 많이 익숙하지 않다면 아래의 링크를 참고해보는 편이 좋을 것이다.

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

 

[백준 BOJ] 2438번 별 찍기 - 1 (C언어)

문제 설명 https://www.acmicpc.net/problem/2438 2438번: 별 찍기 - 1 첫째 줄에는 별 1개, 둘째 줄에는 별 2개, N번째 줄에는 별 N개를 찍는 문제 www.acmicpc.net 접근 방법 - 이중 반복문을 이용한 기본 문제..

smary-it.tistory.com

(위 링크는 별 찍기 문제 중 가장 기본적인 문제이다. 다른 별 찍기 문제의 코드도 함께 참고해보길 바란다.)

 

위의 2438번 문제랑은 반대로, 이 문제는 행을 거듭할수록 출력하는 별의 개수가 1씩 줄어들게끔 해야 한다.

따라서, 이중 반복문의 제어 변수를 조작하는 방법만 조금 변형하면 쉽게 풀 수 있는 문제이다.

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

 

코드의 실행 순서

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

 

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

행 번호 i에 따라서 별의 출력 개수를 다르게 하고, 열 번호 j가 행 번호 i보다 작을 시에만 별을 출력하게끔 한다.

여기서, 행 번호 i는 n에서부터 1까지 점점 감소하는 변수이며, 열 번호 j는 0에서부터 n-1까지 점점 증가하는 변수이다.

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

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

 

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

반응형

 

성공한 코드

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

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

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

 

제출 결과

백준 BOJ 2440번 별 찍기-3 문제 C 제출 결과

(2021.12.15 백준 2440번 문제 제출 결과)

반응형