Training/BOJ

[C++] 2446 별 찍기 - 9

FATKITTY 2020. 8. 10. 01:40
반응형

 

 

아무리 봐도 맞았는데 자꾸 출력 형식이 잘못되었다고 하길래 검색해봤다.

나와 같은 문제를 겪은 사람이 있었다.

 

omg

 

ㅋㅋ...

 

아무튼 출력형식 말고도 애초에 코드 짜면서 좀 애먹었던 문제.

 

*********
  *******
    *****
      ***
        *
      ***
    *****
  *******
*********

N*N 크기의 정사각형이 있다고 가정.

각 줄마다 조건에 맞게 앞뒤로 *을 뺀 만큼 그 자리를 공백으로 채워주는 방식으로 처리했다.

물론 뒤쪽에도 열심히 공백을 채워줘서 결국 문제가 발생했지만.

아무튼 조건에 맞게 앞쪽에만 공백 채우고, 별 출력해주면 끝.

별 하나만 찍히는 중간지점을 기준으로 두 영역으로 나눠서 계산했다.

 

#include <iostream>
using namespace std;

int main()
{
	int N;
	cin >> N;
	int edge = 1 + 2 * (N - 1);

	for (int i = 1; i < 2 * N; i++) {
		if (i <= N) {
			for (int blank1 = 0; blank1 < i - 1; blank1++) cout << " ";
			for (int k = i - 1; k < edge - i + 1; k++) cout << "*";
			cout << endl;
		}
		else if (i > N) {
			for (int blank2 = 0; blank2 < N - 1 - (i - N); blank2++) cout << " ";
			for (int k = N - 1 - (i - N); k < i; k++) cout << "*";  // k < N + (i - N)
			cout << endl;
		}
	}

	return 0;
}

 

반응형

'Training > BOJ' 카테고리의 다른 글

[C++] 1193 분수찾기  (0) 2021.03.09
[C++] 10996 별 찍기 - 21  (0) 2020.08.10
[C++] 10809 알파벳 찾기  (0) 2020.08.10
[C++] 2869 달팽이는 올라가고 싶다  (0) 2020.08.08
[C++] 8958 OX퀴즈  (0) 2020.08.03