0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

AtCoderログ:0119 - ABC 219 B

Posted at

問題

問題文

英小文字からなる $3$ つの文字列 $S_1,S_2,S_3$ と、$1$、$2$、$3$ のみからなる文字列 $T$ が与えられます。
$T$ の各文字に対応する文字列を連結してできる文字列を出力してください。より厳密には、以下の指示にしたがって文字列を出力してください。
・$1 \le i \le ∣T∣$ を満たす整数 $i$ に対し、文字列 $s_i$ を次のように定める。

  • $T$ の $i$ 文字目が $1$ のとき、$S_1$
  • $T$ の $i$ 文字目が $2$ のとき、$S_2$
  • $T$ の $i$ 文字目が $3$ のとき、$S_3$
    ・$s_1,s_2, \ldots ,s_{∣T∣}$ をこの順に連結してできる文字列を出力する。

制約

・$1 \le ∣S_1∣,∣S_2∣,∣S_3∣ \le 10$
・$1 \le ∣T∣ \le 1000$
・$S_1,S_2,S_3$ は英小文字からなる。
・$T$ は $1$、$2$、$3$ のみからなる。

回答

回答1 (AC)

いま、流行のマリトッツォです(が、問題名の由来がわかりませんでした...)。文字列 $T$ の各文字に対し、'1' ならば $S_1$ を、'2' ならば $S_2$ を、'3' ならば $S_3$ を出力していけば良いでしょう。各文字が chr 型になりますのでご注意ください。コードは以下のようになりました。

abc219b-1.cpp
#include <bits/stdc++.h>
using namespace std;

int main(){
  string s1, s2, s3, t;
  cin >> s1 >> s2 >> s3 >> t;

  for ( int i=0; i<(int)t.size(); i++ ) {
    if ( t.at(i)=='1' ) {
      cout << s1;
    } else if ( t.at(i)=='2' ) {
      cout << s2;
    } else {
      cout << s3;
    }
  }  
}

調べたこと

AtCoder の解説公式解説

回答1と同じ方針でした。$S_1,S_2,S_#$ を配列で保持すれば、場合分け (if 文) が不要になるとのこと。なるほど。

リンク

前後の記事

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?