문제 출처: www.acmicpc.net/problem/2439
2439번: 별 찍기 - 2
첫째 줄에는 별 1개, 둘째 줄에는 별 2개, N번째 줄에는 별 N개를 찍는 문제 하지만, 오른쪽을 기준으로 정렬한 별(예제 참고)을 출력하시오.
www.acmicpc.net
1. 코드
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <iostream> | |
using namespace std; | |
int main(void) | |
{ | |
int n; | |
cin >> n; | |
for (int i = 1; i <= n; i++) | |
{ | |
for (int j = 0; j < n - i; j++) | |
cout << " "; | |
for (int j = 0; j < n - (n - i); j++) | |
cout << "*"; | |
cout << endl; | |
} | |
return 0; | |
} |
2. 풀이

예시로 먼저 설명을 하겠다. 5를 입력했을 때 위 그림과 같이 나오는데 패턴을 아래 표는 패턴을 정리한 것이다.
띄어쓰기 횟수 | * 횟수 | |
첫 번째 줄 | 4번 | 1번 |
두 번째 줄 | 3번 | 2번 |
세 번째 줄 | 2번 | 3번 |
네 번째 줄 | 1번 | 4번 |
다섯 번째 줄 | 0번 | 5번 |
그렇다면 아래 표와 같이 표현할 수 있다.
띄어쓰기 횟수 | * 횟수 | |
첫 번째 줄 | 5 - 1 = 4번 | 5 - (5 - 1) = 5 - 4 = 1번 |
두 번째 줄 | 5 - 2 = 3번 | 5 - (5 - 2) = 5 - 3 = 2번 |
세 번째 줄 | 5 - 3 = 2번 | 5 - (5 - 3) = 5 - 2 = 3번 |
네 번째 줄 | 5 - 4 = 1번 | 5 - (5 - 4) = 5 - 1 = 4번 |
다섯 번째 줄 | 5 - 5 = 0번 | 5 - (5 - 5) = 5 - 0 =5번 |
그래서 이것을 코드로 표현할 떼 변수와 반복문을 이용하여 해결할 수 있을 것이다.
int n;
cin >> n;
별의 줄을 입력받을 변수 n을 선언하고 cin을 통해 입력받는다.
for (int i = 1; i <= n; i++)
그리고 i라는 변수를 1로 초기화하고 n만큼 반복하게 한다. 여기서 i의 값을 1로 한 것은 변수 i를 계산에 이용할 때 조금 더 편하게 계산하기 위해 1로 초기화했다.
for (int j = 0; j < n - i; j++)
cout << " ";
그리고 j를 n - i만큼 반복한다. 반복한 횟수만큼 띄어쓰기를 해준다.
for (int j = 0; j < n - (n - i); j++)
cout << "*";
그리고 n - (n - i)만큼 *를 출력한다.
cout << endl;
마지막에 개행을 해주어서 줄을 구분시켜준다.
'컴퓨터 > 백준 알고리즘' 카테고리의 다른 글
백준 알고리즘 10952번: A+B - 5 [C++] (0) | 2020.12.18 |
---|---|
백준 알고리즘 10871번: X보다 작은 수 [C++] (0) | 2020.12.16 |
백준 알고리즘 11021번: A+B - 7 [C++] (0) | 2020.12.08 |
백준 알고리즘 2742번: 기찍 N [C++] (0) | 2020.12.07 |
백준 알고리즘 15552번: 빠른 A+B [C++] (0) | 2020.12.04 |