programming

[c++] 백준 2444

Mysteryu 2023. 5. 31. 20:01

틀린 코드

 

#include <iostream>

int main() {
	int N;
	std::cin >> N;

	//2N - 1 
	int out_size = 2 * N - 1;
	int blank = out_size / 2;
	int flag = 0;
	
	for (int i = 0; i < out_size; i++) {
		for (int j = 0; j < blank; j++) {
			std::cout << " ";
		}
		for(int k = blank; k < out_size - blank; k++) {
			std::cout << "*";
		}
		for (int h = out_size - blank; h < out_size; h++) {
			std::cout << " ";
		}
		std::cout << "\n";
		
		if (flag == 0) {
			blank--;
			if (blank == 0)
				flag = 1;
		}
		else
			blank++;
	}	
}

여기서 변수가 h인 반복문은 사실 필요 없는 문장이다. 왜냐하면 변수가 k인 반복문에서 별을 찍어준 후에는 굳이 공백을 출력하지 않아도 되기 때문이다. 따라서 이를 수정하면

 

#include <iostream>

int main() {
	int N;
	std::cin >> N;

	//2N - 1 
	int out_size = 2 * N - 1;
	int blank = out_size / 2;
	int flag = 0;
	
	for (int i = 0; i < out_size; i++) {
		for (int j = 0; j < blank; j++) {
			std::cout << " ";
		}
		for(int k = blank; k < out_size - blank; k++) {
			std::cout << "*";
		}
		std::cout << "\n";

		if (flag == 0) {
			blank--;
			if (blank == 0)
				flag = 1;
		}
		else
			blank++;
	}	
}

이 소스코드로 제출하였다.