작성일 :

문제 링크

27333번 - JOI エディタ (JOI Editor)

설명

특정 조건의 문자열 변환을 수행하는 문제입니다.

문자열은 'j', 'o', 'i' 세 개의 문자로 구성되며, 동일한 문자가 연속해서 나타날 경우 그 부분을 해당 문자의 대문자로 변환해야 합니다.

따라서, 입력으로 주어진 문자열을 순회하며, 연속된 동일 문자가 있는지 확인합니다.

연속된 동일 문자를 찾으면, 그 부분을 해당 문자의 대문자로 변환합니다.

C# 에서 문자열은 불변이므로, char[] 형태로 변환해서 다루어야 함에 주의합니다.




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
namespace Solution {
  class Program {
    static void Main(string[] args) {

      var n = int.Parse(Console.ReadLine()!);
      var s = Console.ReadLine()!;

      var charArr = s.ToCharArray();
      for (int i = 0; i < n - 1; i++) {
        if (charArr[i] == charArr[i + 1]) {
          charArr[i] = char.ToUpper(charArr[i]);
          charArr[i + 1] = char.ToUpper(charArr[i + 1]);
          i++;
        }
      }

      s = new string(charArr);

      Console.WriteLine(s);

    }
  }
}



[ C++ ]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <bits/stdc++.h>

using namespace std;

int main() {
  ios::sync_with_stdio(false);
  cin.tie(nullptr);

  int n; cin >> n;
  string s; cin >> s;

  for (int i = 0; i < n - 1; i++) {
    if (s[i] == s[i + 1]) {
      s[i] = toupper(s[i]);
      s[i + 1] = toupper(s[i + 1]);
      i++;
    }
  }

  cout << s << "\n";

  return 0;
}