[백준 10996] 별 찍기 - 21 (C#, C++) - soo:bak
작성일 :
문제 링크
설명
주어진 자연수 N
에 따라 별(*
)과 공백(
)이 반복되는 패턴을 출력하는 문제입니다.
출력되는 전체 줄 수는 2 * N
이며, 각 줄에는 N
개의 문자가 포함됩니다.
출력 규칙은 다음과 같습니다:
- 짝수 번째 줄은 홀수 번째 열에만 별이 출력됩니다.
- 홀수 번째 줄은 짝수 번째 열에만 별이 출력됩니다.
- 이를 통해 별과 공백이 번갈아 나타나는 구조를 가집니다.
단, N = 1
인 경우에는 예외적으로 별 하나만 출력합니다.
접근법
먼저, 입력받은 값이 1
인 경우에는 조건 없이 별 하나만 출력하면 됩니다.
그 외의 경우에는 총 2 * N
개의 줄을 출력해야 하며, 각 줄마다 N
개의 문자를 구성하게 됩니다.
줄 번호가 짝수인지 홀수인지에 따라 별과 공백이 번갈아 출력되는 방식이 달라집니다:
- 줄 번호가 짝수일 때는 첫 번째 문자부터 별이 시작되고, 이후 공백과 번갈아 출력됩니다.
- 줄 번호가 홀수일 때는 공백으로 시작한 뒤, 별과 공백이 번갈아 출력됩니다.
Code
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
using System;
class Program {
static void Main() {
int n = int.Parse(Console.ReadLine());
if (n == 1) {
Console.WriteLine("*");
return;
}
for (int r = 0; r < 2 * n; r++) {
for (int c = 0; c < n; c++) {
if ((r % 2 == 0 && c % 2 == 0) || (r % 2 == 1 && c % 2 == 1))
Console.Write("*");
else Console.Write(" ");
}
Console.WriteLine();
}
}
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n; cin >> n;
if (n == 1) {
cout << "*\n";
return 0;
}
for (int r = 0; r < 2 * n; r++) {
for (int c = 0; c < n; c++) {
if (r % 2 == 1 && c % 2 == 0) cout << " ";
else if (r % 2 == 0 && c % 2 == 1) cout << " ";
else cout << "*";
}
cout << "\n";
}
return 0;
}