상세 컨텐츠

본문 제목

[Level1.] 둘만의 암호 C++

C++/Programmers

by J2on 2024. 3. 1. 23:49

본문

<< 문제 >>

https://school.programmers.co.kr/learn/courses/30/lessons/155652

 

프로그래머스

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

programmers.co.kr

 

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 >> 

https://github.com/J2on/StudyAlgorithm_Part2/tree/main/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4/1/155652.%E2%80%85%EB%91%98%EB%A7%8C%EC%9D%98%E2%80%85%EC%95%94%ED%98%B8

 

'C++ > Programmers' 카테고리의 다른 글

[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

관련글 더보기

댓글 영역