문제 링크
난이도 : Lv. 0
문제 내용
문제 설명
문자열 my_string
과 이차원 정수 배열 queries
가 매개변수로 주어집니다. queries
의 원소는 [s, e] 형태로, my_string
의 인덱스 s부터 인덱스 e까지를 뒤집으라는 의미입니다. my_string
에 queries
의 명령을 순서대로 처리한 후의 문자열을 return 하는 solution 함수를 작성해 주세요.
제한사항
my_string
은 영소문자로만 이루어져 있습니다.- 1 ≤
my_string
의 길이 ≤ 1,000 queries
의 원소는 [s, e]의 형태로 0 ≤ s ≤ e <my_string
의 길이를 만족합니다.- 1 ≤
queries
의 길이 ≤ 1,000
입출력 예
my_string | queries | result |
---|---|---|
”rermgorpsam” | [[2, 3], [0, 7], [5, 9], [6, 10]] | “programmers” |
입출력 예 설명
- 예제 1번의
my_string
은 “rermgorpsam”이고 주어진queries
를 순서대로 처리하면 다음과 같습니다.
queries | my_string |
---|---|
”rermgorpsam” | |
[2, 3] | “remrgorpsam” |
[0, 7] | “progrmersam” |
[5, 9] | “prograsremm” |
[6, 10] | “programmers” |
문제 분석
swap 쓰면 될듯
작성한 코드
#include <bits/stdc++.h>
using namespace std;
string solution(string my_string, vector<vector<int>> queries) {
for (const auto& query : queries) {
int queryLen = query[1] - query[0] + 1;
for(int i = 0 ; i < (queryLen / 2) ; i++){
swap(my_string[query[0] + i], my_string[query[1] - i]);
}
}
return my_string;
}
우수 코드 분석
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
string solution(string my_string, vector<vector<int>> queries) {
for(const auto& q : queries)
{
reverse(my_string.begin()+q[0],my_string.begin()+q[1]+1);
}
return my_string;
}
스왑을 쓸 필요가 없었다……….. reverse라는 함수가 있었다..