문제출처: https://www.acmicpc.net/problem/10996


문제

예제를 보고 규칙을 유추한 뒤에 별을 찍어 보세요.


입력

첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다.


출력

첫째 줄부터 차례대로 별을 출력한다.


풀이

별찍기를 풀 때 마다 느끼지만 재귀를 사용한 고난이도의 별찍기문제가 아닌이상 90%가 i,j를 이용한 연산만으로도 풀리는것같습니다.

즉, 별찍기를 어려워하는것은 아직 규칙성을 발견하여 코딩하는 연습이 부족하다는 것입니다.( 풀 때 마다 실력이 늡니다.) 문제를 살펴보면, 행의 갯수는 n*2, 한개의 열에 등장하는 공백+별의 갯수는 1~n개 라는 것을 알아야합니다. 그리고, 별이 찍히는 위치가 행마다 달라지는데, 행이 홀수냐 짝수냐에 따라, 그리고 그 때의 현재 열이 홀수냐 짝수냐에 따라 별과 공백의 위치가 엇갈리는 것을 확인할 수 있습니다. 코드로 옮기면 끝입니다.


코드

#include<iostream>
using namespace std;
int main()
{
	int n;
	cin >> n;
	for (int i = 1; i <= n * 2; i++)
	{
		for (int j = 1; j <= n; j++)
		{
			if (i % 2 == 0)
			{
				if (j % 2 == 0)
					cout << "*";
				else cout << " ";
			}
			else
			{
				if (j % 2 == 0)
					cout << " ";
				else cout << "*";
			}
		}
		cout << endl;
	}
}


결과



+ Recent posts