<< 문제 >>
https://school.programmers.co.kr/learn/courses/30/lessons/155652
Hashing을 사용한다면 쉽게 풀 수 있고, Skip할 문자는 미리 걸러주면 됩니다.
<< 코드 >>
#include <string>
#include <vector>
#include <unordered_map>
using namespace std;
string solution(string s, string skip, int index) {
string answer = "";
vector<char> alphabet = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i','j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'};
// Skip해야 할 char 제거
vector<char> vec;
bool isValid;
for(auto& c : alphabet){
isValid = true;
for(int i = 0; i < skip.size(); i++){
if(skip[i] == c){
isValid = false;
break;
}
}
if(isValid) vec.push_back(c);
}
// 변환을 위한 Hash Table 작성
unordered_map<char, char> um;
int vecSize = vec.size();
for(int i=0; i<vecSize; i++){
um[vec[i]] = vec[(i+index) % vecSize];
}
// Hashing을 이용한 변환
for(auto& c:s){
answer += um[c];
}
return answer;
}
<< GitHub >>
[Level3.] 등굣길 C++ (0) | 2024.06.20 |
---|---|
[Level2.] 할인 행사 C++ (0) | 2024.03.02 |
[Level2.] 호텔 대실 C++ (0) | 2024.03.01 |
[Level2.] 튜플 C++ (0) | 2024.02.22 |
[Level2.] 숫자 변환하기 C++ (0) | 2024.02.18 |
댓글 영역