[백준 BOJ] 10991번 별 찍기 - 16 (C++/cpp)

2023. 1. 30. 17:04PS (Program Solving)/BOJ (백준)

문제 설명

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

 

10991번: 별 찍기 - 16

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

www.acmicpc.net

백준 BOJ 10991번 별 찍기 - 16 문제 사진1
백준 BOJ 10991번 별 찍기 - 16 문제 사진2

 

접근 방법 - 이중 반복문을 응용한 기본 문제

백준의 10991번 문제는 이중 반복문을 이용하여 해결할 수 있는 기본 문제이다.

해당 문제는, 위에서 확인할 수 있다시피 입력값에 대해 특정 규칙대로 출력을 수행해야 하는 문제이다.

백준에는 위와 같은 별 찍기 문제가 꽤 있는데, 그중 나름 유사한 원리를 이용한 문제의 풀이를 아래에 기재해 놓았다.

아래의 링크도 함께 참고하면 문제 해결에 도움이 될 것이다. 언어는 조금 다르지만

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

 

[백준 BOJ] 2442번 별 찍기 - 5 (C언어)

문제 설명 https://www.acmicpc.net/problem/2442 2442번: 별 찍기 - 5 첫째 줄에는 별 1개, 둘째 줄에는 별 3개, ..., N번째 줄에는 별 2×N-1개를 찍는 문제 별은 가운데를 기준으로 대칭이어야 한다. www.acmicpc.net

smary-it.tistory.com

 

필자는 아래와 같은 규칙을 찾아내었고, 이를 통해 문제를 해결할 수 있었다.

(행 번호(i)가 1번부터 시작한다고 가정한다.)
- 별을 찍기 전에 공백부터 출력해야 하는데, 이 공백은 입력값에서 i를 뺀 만큼 출력한다.
- 이다음엔, 별과 공백을 번갈아가며 출력하는 연산이다.
해당 연산에선 또 다른 반복문과 또 다른 제어 변수(j)를 사용하는데, j가 1번부터 시작할 때 j가 홀수일 때엔 별("*")을 j가 짝수일 때엔 공백(" ")을 출력한다.

더 자세한 내용은 아래에 있으니, 혹여나 해당 문제를 해결하는 데에 어려움을 겪고 있다면 아래의 설명과 코드를 참고해 보길 바란다.

필자는 아래의 순서대로 코드를 작성하여 문제를 해결하였다.

 

코드의 실행 순서

1) 값(n)을 입력받는다.

 

2) n의 크기만큼, 반복문을 수행하여 아래의 연산을 취한다.

(위에서 설명한 규칙대로 출력을 수행하게끔 하였다.)

- 우선 공백만 출력하는 반복문을 하나 만든다. 이때, 이 반복문은 n에서 현재 행의 번호(i)를 뺀 만큼 실행한다.

- 별과 공백을 번갈아가며 출력을 수행할 반복문을 만든다.

이때 이 반복문은 현재 행의 번호*2(i*2) 이전까지만 실행하는데, 현재 반복문에 있어 열의 번호(j)가 홀수라면 별("*")을 출력하고 짝수라면 공백(" ")을 출력한다.

- 위 2개 반복문의 실행이 순차적으로 끝났다면, 개행을 출력한 뒤 다음 연산을 취한다.

 

3) 모든 출력이 완료되었다면, 실행 종료한다.

반응형

 

성공한 코드

#define _CRT_SECURE_NO_WARNINGS
#pragma warning(disable: 4996)
#include <iostream>
#define endl '\n'
using namespace std;

//백준 10991번 코드
int main() {
	ios::sync_with_stdio(false);
	cin.tie(NULL);	cout.tie(NULL);

	int n;
	cin >> n;
	
	for (int i = 1; i <= n; i++) {
		for (int j = n; j > i; j--) {
			cout << " ";
		}
		for (int j = 1; j < i * 2; j++) {
			if (j % 2 != 0) {
				cout << "*";
			}
			else {
				cout << " ";
			}
		}
		cout << endl;
	}
}

 

제출 결과

백준 BOJ 10991번 별 찍기 - 16 문제 C++ 제출 결과

(2022.07.28 백준 10991번 문제 제출 결과)

반응형