※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※
이번에 볼 문제는 백준 18412번 문제인 文字列の反転 (Inversion of a String)이다.
문제는 아래 링크를 확인하자.
https://www.acmicpc.net/problem/18412
18412번: 文字列の反転 (Inversion of a String)
S のうち A 文字目から B 文字目までの文字の並びを逆にしてできる文字列を 1 行で出力せよ.
www.acmicpc.net
길이 N인 문자열이 주어졌을 때, A번째 글자부터 B번째 글자까지의 부분문자열(1-indexed)을 뒤집은 문자열을 출력하는 문제이다.
첫 글자부터 A-1번째 글자까지의 부분문자열, (A번째 글자부터 B번째 글자까지의 부분문자열)을 뒤집은 문자열, B+1번째 글자부터 N번째 글자까지의 부분문자열을 순서대로 출력하는 것으로 문제를 해결하자.
substr을 이용하면 부분문자열을 간단히 얻을 수 있다.
algorithm 헤더의 reverse 함수를 이용하면 문자열을 간단히 뒤집을 수 있다.
아래는 제출한 소스코드이다.
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
int N, A, B; string s; cin >> N >> A >> B >> s;
string rev = s.substr(A - 1, B - A + 1);
reverse(rev.begin(), rev.end());
cout << s.substr(0, A - 1) << rev << s.substr(B, N - B);
}
728x90
'BOJ' 카테고리의 다른 글
[BOJ 16787 // C++] マルバツスタンプ (Circle Cross Stamps) (0) | 2022.09.02 |
---|---|
[BOJ 16786 // C++] すごろくと駒 (Sugoroku and Pieces) (0) | 2022.09.01 |
[BOJ 21347 // C++] Keyboardd (0) | 2022.08.30 |
[BOJ 24313 // C++] 알고리즘 수업 - 점근적 표기 1 (1) | 2022.08.29 |
[BOJ 2999 // C++] 비밀 이메일 (0) | 2022.08.28 |