프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

풀이방법

문자열 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

+ Recent posts