※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※

 

이번에 볼 문제는 백준 27333번 문제인 JOI エディタ (JOI Editor)이다.
문제는 아래 링크를 확인하자.

https://www.acmicpc.net/problem/27333 

 

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

この例では置換は行われない.最終的に JOI Editor に書かれている文字列は joijoi であるので,joijoi を出力する.

www.acmicpc.net

'j', 'o', 'i'의 세 종류의 문자로 이루어진 문자열이 입력으로 들어올 때, 이 문자열을 앞에서부터 읽어나가며 같은 두 문자가 인접해있는 것을 발견할 때마다 그 두 문자를 대문자로 바꿔주는 문제이다.

 

위에서 서술한 내용을 그대로 구현해 문제를 해결해주자. 문자를 대문자로 바꾸는 것은 toupper함수를 이용하거나 아스키코드에서 대응되는 대소문자 사이의 코드값의 차가 일정함을 이용하는 것으로 구현할 수 있다.

 

아래는 제출한 소스코드이다.

#include <iostream>
#include <string>
using namespace std;

int slen;
string s;

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

	cin >> slen >> s;
	for (int i = 1; i < slen; i++) {
		if (s[i] == s[i - 1]) s[i - 1] += 'A' - 'a', s[i] += 'A' - 'a';
	}

	cout << s;
}
728x90

+ Recent posts