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

2023. 1. 20. 11:07PS (Program Solving)/BOJ (백준)

문제 설명

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

 

10995번: 별 찍기 - 20

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

www.acmicpc.net

백준 BOJ 10995번 별 찍기 - 20 문제 사진1
백준 BOJ 10995번 별 찍기 - 20 문제 사진2

 

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

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

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

이 문제와 비슷한 유형의 문제는 백준에 매우 많은데, 그중 아주 기본적인 문제에 대한 해설을 아래에 기재해 놓았다.

이러한 유형을 처음 접해본다면 아래의 링크를 참고하는 것도 좋을 것이다.

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

 

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

(행 번호가 0번부터 시작한다고 가정한다.)
- 행 번호가 짝수라면 별 먼저 출력, 공백 나중에 출력하도록 하는 행위를 반복한다.
- 행 번호가 홀수라면 공백 먼저 출력, 별 나중에 출력하도록 하는 행위를 반복한다.
=> 각 행, 열에서 입력값만큼 위 출력 규칙을 반복한다.

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

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

 

코드의 실행 순서

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

 

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

- 현재 탐색 중인 행 번호(i)에 따라 아래의 명령문을 수행한다.

만일 i가 짝수라면, 별이 먼저 출력되고 공백이 나중에 출력되는 "* "를 n번 출력한다.

만일 i가 홀수라면, 공백이 먼저 출력되고 별이 나중에 출력되는 " *"를 n번 출력한다.

- 위 2개 중 하나의 반복문이 하나씩 종료될 때마다, 개행을 출력한다.

 

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

반응형

 

성공한 코드

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

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

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

 

제출 결과

백준 BOJ 10995번 별 찍기 - 20 문제 C++ 제출 결과

(2022.11.07 백준 10995번 문제 제출 결과)

반응형