Official

B - Center Alignment Editorial by KumaTachiRen


文字列 \(S\) の長さを \(|S|\) で表すと、\(T_i\) についての条件における \(k\) の値は \(k=\dfrac{m-|S_i|}{2}\) となります。

実際に \(T_i\) を求める方法としては「\(S_i\) の前後に . を付け足すことを \(k\) 回繰り返す」や「.\(k\) 個結合した文字列を利用する」などが考えられます。

実装例(C++)

#include <bits/stdc++.h>
using namespace std;
int main() {
    int N;
    cin >> N;
    vector<string> S(N);
    for (int i = 0; i < N; i++) cin >> S[i];
    int m = 0;
    for (int i = 0; i < N; i++) m = max(m, (int)S[i].size());
    for (int i = 0; i < N; i++) {
        int k = (m - S[i].size()) / 2;
        string T = string(k, '.') + S[i] + string(k, '.');
        cout << T << "\n";
    }
}

実装例(Python)

N = int(input())
S = [input() for _ in range(N)]
m = max(len(s) for s in S)
for s in S:
    k = (m - len(s)) // 2
    t = ("." * k) + s + ("." * k)
    print(t)

posted:
last update: