けんちょんの競プロ精進記録

競プロの精進記録や小ネタを書いていきます

JOI 一次予選 2025 第 1 回 C - OIJ (7Q, 難易度 2)

for 文と if 文の練習!

問題概要

文字 J, O, I からなる長さ  N の文字列  S が与えられる。

この文字列において、J を O に、O を I に、I を J に置換した文字列を答えよ。

解法

for 文を用いることで、 S の各文字にアクセスすることができる。左から  i 番目の文字 S[i] について、次のような処理をすればよい。

  • S[i] == 'J' のとき、S[i] を 'O' にする
  • S[i] == 'O' のとき、S[i] を 'I' にする
  • S[i] == 'I' のとき、S[i] を 'J' にする

コード

#include <bits/stdc++.h>
using namespace std;

int main() {
    int N;
    string S;
    cin >> N >> S;
    for (int i = 0; i < N; i++) {
        if (S[i] == 'J') S[i] = 'O';
        else if (S[i] == 'O') S[i] = 'I';
        else S[i] = 'J';
    }
    cout << S << endl;
}