작성일 :

문제 링크

15444번 - Vera and ABCDE

설명

문자열을 블록 패턴으로 변환해 가로로 이어 붙인 5줄 결과를 출력하는 문제입니다.


접근법

먼저 A~E 각 문자의 5x3 패턴을 준비합니다.

다음으로 문자열을 순서대로 보며 각 행의 결과에 해당 패턴을 이어 붙입니다.

마지막으로 5개의 결과 줄을 출력합니다.



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
26
27
using System;
using System.Text;

class Program {
  static void Main() {
    var n = int.Parse(Console.ReadLine()!);
    var s = Console.ReadLine()!;

    var pat = new string[5][];
    pat[0] = new[] { "***", "*.*", "***", "*.*", "*.*" };
    pat[1] = new[] { "***", "*.*", "***", "*.*", "***" };
    pat[2] = new[] { "***", "*..", "*..", "*..", "***" };
    pat[3] = new[] { "***", "*.*", "*.*", "*.*", "***" };
    pat[4] = new[] { "***", "*..", "***", "*..", "***" };

    var rows = new StringBuilder[5];
    for (var i = 0; i < 5; i++) rows[i] = new StringBuilder();

    for (var i = 0; i < n; i++) {
      var idx = s[i] - 'A';
      for (var r = 0; r < 5; r++) rows[r].Append(pat[idx][r]);
    }

    for (var r = 0; r < 5; r++)
      Console.WriteLine(rows[r].ToString());
  }
}

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
30
#include <bits/stdc++.h>
using namespace std;
typedef vector<string> vs;
typedef vector<vs> vvs;

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

  int n; cin >> n;
  string s; cin >> s;

  vvs pat(5);
  pat[0] = {"***", "*.*", "***", "*.*", "*.*"};
  pat[1] = {"***", "*.*", "***", "*.*", "***"};
  pat[2] = {"***", "*..", "*..", "*..", "***"};
  pat[3] = {"***", "*.*", "*.*", "*.*", "***"};
  pat[4] = {"***", "*..", "***", "*..", "***"};

  vs rows(5, "");
  for (int i = 0; i < n; i++) {
    int idx = s[i] - 'A';
    for (int r = 0; r < 5; r++)
      rows[r] += pat[idx][r];
  }

  for (int r = 0; r < 5; r++)
    cout << rows[r] << "\n";
  return 0;
}