작성일 :

문제 링크

26547번 - Square

설명

단어가 주어질 때 예제 형식의 정사각형 패턴을 출력하는 문제입니다.


접근법

첫 줄에 단어를 그대로 출력하고, 중간 줄은 왼쪽과 오른쪽 끝에 해당 위치의 문자를 두고 사이를 공백으로 채웁니다.

마지막 줄에는 단어를 뒤집어 출력합니다. 길이가 1이면 한 줄만 출력합니다.


Code

C#

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
using System;

class Program {
  static void Main() {
    var t = int.Parse(Console.ReadLine()!);
    for (var tc = 0; tc < t; tc++) {
      var s = Console.ReadLine()!;
      var n = s.Length;

      Console.WriteLine(s);
      if (n == 1) continue;

      var space = new string(' ', n - 2);
      for (var i = 1; i <= n - 2; i++) {
        var left = s[i];
        var right = s[n - 1 - i];
        Console.WriteLine($"{left}{space}{right}");
      }

      var arr = s.ToCharArray();
      Array.Reverse(arr);
      Console.WriteLine(new string(arr));
    }
  }
}

C++

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <bits/stdc++.h>
using namespace std;

int main() {
  ios::sync_with_stdio(false);
  cin.tie(nullptr);

  int t; cin >> t;
  for (int tc = 0; tc < t; tc++) {
    string s; cin >> s;
    int n = s.size();

    cout << s << "\n";
    if (n == 1) continue;

    string space(n - 2, ' ');
    for (int i = 1; i <= n - 2; i++) {
      char left = s[i];
      char right = s[n - 1 - i];
      cout << left << space << right << "\n";
    }

    string rev = s;
    reverse(rev.begin(), rev.end());
    cout << rev << "\n";
  }

  return 0;
}