[백준 15444] Vera and ABCDE (C#, C++) - soo:bak
작성일 :
문제 링크
설명
문자열을 블록 패턴으로 변환해 가로로 이어 붙인 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;
}