[アルゴリズム/規格]2439号::星図-2(C++)


に質問🏻 :: [2439号]拍摄星子-2


(緑色のテキストをクリックして問題に移動)

1行目は1つの星、2行目は2つの星、N行目はNつの星です.ただし、右揃えの星を出力してください(例を参照).

アルゴリズム💻


これは2438番のように、もう一つの問題です.2438番ポイントとは異なり、右揃えを行います.まずスペースを出力し、星を出力します.
星の数は2438番のように、N行ごとにN個出力されます.だから星の部分は2438号と同じでいいです.( 2438番ショートカット )
N行を増やすごとに、星を撮る個数が1つ増えます.逆に、空白の数は1つ減ります.また,最後の行はN個出力しなければならない.

🚨 リファレンス🚨
直接解けるが,CとC++の標準I/O同期を中断する方法で行った.
(cin.tie(NULL)は不要です.入力と出力が交互になっているので、利用可能なコンテンツはありません!)
詳しくは15552番解答で説明します.( 15552の説明ショートカット )

💡完全なコード💡


白駿サイトで変数名を提出したのはi,j,kと書いてありますが、他のブログを参考にして、変数名を勝手に取ってはいけないような気がします.
変数名に自分の意味を与える.行row、星のfor文変数star、スペースのfor文変数blankを出力します.
最終コードの変更
#include <iostream>
using namespace std;

int main()
{
	//입출력의 반복은 없으므로 cin.tie(NULL);은 쓸 필요 없다.
	ios_base::sync_with_stdio(false);

	int N, row, star, blank;
	cin >> N;

	//1행부터 N행까지 반복
	for (row = 1; row <= N; row++) {
    
    	//공백이 먼저 출력된다. 공백은 N-row 만큼 출력된다.
		for (blank = 0; blank < N - row; blank++) {
			cout << " ";
		}
        
        //공백 이후에 별 출력. 별은 행 개수만큼 출력된다.
		for (star = 0; star < row; star++) {
			cout << "*";
		}
		cout << "\n";
	}

	return 0;
}

振り返る🤔


  • みんなはこれが簡単な問題だと言っているが,私はずいぶん苦労した.思いがけずもう一つのドアが増えた.これで性能が低下すると考えられるかどうかは、原因が分からない.
    「私は空白が4-3-2-1に減ることを知っています.どうやって星と一緒にいますか?」この考えの答えが見つからず、結局他の人の答えを見た.
    for文をもう一つ書けばいいのですが、これは簡単な問題です.
    今度はどんなルールがあるか調べて、図に分析してからコードを書きます.すぐにコードを書くことに悩んでいたと思います.

  • 変数名i,j,kを設定するときは複雑ですが、変えてみると、用途が何なのかわかりやすいようです.
  • Reference

  • https://st-lab.tistory.com/249