解いた問題のソースコードと解説など。


POJ 1917 Automatic Poetry

問題

"s1<s2>s3<s4>s5" という形式の文字列が与えられる。もう一つ "s..." という形式の文字列が与えられる。元の文字列からカッコを取り除いた文字列と、もう一つの文字列を "ss4s3s2s5" という形式に直したものを出力せよ。

やりかた

Javaであれば正規表現を使えるので楽。といってもC++でも難しいことはない。

以下ソース。

int main(int argc, char **argv){
  int N;
  cin >> N;
  cin.ignore();
  while(N--){
    string s, t;
    getline(cin, s);
    getline(cin, t);
    
    int idx = 0;
    string a[5];
    for(int i = 0; i < s.length(); i++){
      if(s[i] == '<' || s[i] == '>') idx++; //カッコが来るごとに文字は分かれる
      else a[idx] += s[i];
    }
    cout << a[0] << a[1] << a[2] << a[3] << a[4] << endl;
    for(int i = 0; i < t.length(); i++){
      if(t[i] == '.'){
	cout << a[3] << a[2] << a[1] << a[4] << endl;
	break;
      }else cout << t[i];
    }
  }
  return 0;
}
Get up! 明日のSUPER ST@R!