[HackerRank] C++ Staircase

Organizing Data
|2022. 2. 13. 16:35

Table of contents

    www.hackerrank.com/challenges/staircase/problem

     

    Staircase | HackerRank

    Print a right-aligned staircase with n steps.

    www.hackerrank.com

     

    1. 정리

    HackerRank의 계단식 출력 문제입니다. 먼저, 정수를 입력 받고 staircase 함수에 인자로 전달해줍니다.

    int n;
    cin >> n;
    cin.ignore(numeric_limits<streamsize>::max(), '\n');
    
    staircase(n);

     

    staircase 함수는 이 인자를 받아 처리하게 됩니다. 일단, 입력 받은 정수의 수와 계단식 출력의 줄수가 똑같으므로 정수만큼의 반복문을 만들어줍니다. 그리고 공백의 개수와 #의 개수만큼 추가로 출력해줍니다. 현재, 출력하는 행과 반비례하므로 감산하는 반복문을 만들어줍니다. 반대로, #의 개수는 현재, 출력하는 행과 비례하므로 가산하는 반복문을 만들어줍니다.

    코드로는 다음과 같습니다.

    void staircase(int n) {
    	for (int i = 0; i < n; i++) {				//총 줄의 개수만큼 반복
    		for (int j = n-i; j > 1; j--) {			//현재 출력중인 줄의 띄어쓰기 개수만큼 반복
    			cout << " ";
    		}
    
    		for (int j = 0; j <= i; j++) {			//현재 출력중인 줄의 # 개수만큼 반복
    			cout << "#";
    		}
    		cout << endl;
    	}
    }

     

    2. 전체코드

    #include <bits/stdc++.h>
    
    using namespace std;
    
    // Complete the staircase function below.
    void staircase(int n) {
    	for (int i = 0; i < n; i++) {				//총 줄의 개수만큼 반복
    		for (int j = n-i; j > 1; j--) {			//현재 출력중인 줄의 띄어쓰기 개수만큼 반복
    			cout << " ";
    		}
    
    		for (int j = 0; j <= i; j++) {			//현재 출력중인 줄의 # 개수만큼 반복
    			cout << "#";
    		}
    		cout << endl;
    	}
    }
    
    int main()
    {
    	int n;
    	cin >> n;
    	cin.ignore(numeric_limits<streamsize>::max(), '\n');
    
    	staircase(n);
    
    	return 0;
    }