풀이방법
문자열 s의 각 알파벳에 index만큼 뒤에 있는 알파벳을 구하되 문자열 skip에 있는 알파벳은 카운트하지 않아야한다.
이를 구현하기 위해 문자열 s의 각 알파벳에 index번 만큼 1을 더하였을 때 해당 알파벳이 skip에 들어있는 알파벳일 경우 반복 횟수를 한 번씩 늘려주도록 했다. 또한 s와 skip은 알파벳 소문자로만 이루어져 있으므로 s[i]에 1을 더하였을 시 아스키 코드 값이 122를 초과한다면 a가 되도록 하였다.
1. 알파벳의 검사를 위해 int형 변수 cur을 선언
2. s[i]에 ++해준다.
3. s[i]가 z보다 커지면 a로 변환하고 find함수로 s[i]가 skip안에 있는지 찾고 있다면 반복 횟수를 늘려주고 없다면 계속해서 수행한다.
4. 이를 index번만큼 반복 후 변환된 문자열 s를 리턴
#include <string>
#include <vector>
using namespace std;
string solution(string s, string skip, int index) {
int cur = 0;
for(int i = 0; i < s.size(); i++) {
for(int j = 0; j < index; j++) {
s[i]++;
if(s[i] > 'z') s[i] = 'a';
cur = skip.find(s[i]);
if(cur == -1)
continue;
else j--;
}
}
return s;
}
'프로그래머스 > 1레벨' 카테고리의 다른 글
카드 뭉치/C++ (0) | 2023.02.28 |
---|---|
개인정보 수집 유효기간/C++ (0) | 2023.02.06 |
신고 결과 받기/C++ (0) | 2023.01.03 |
성격 유형 검사하기/C++ (0) | 2023.01.03 |
숫자 짝꿍/C++ (1) | 2023.01.03 |