[코드트리] - 치환 암호

LSDrug·2024년 7월 18일
0

문제풀이

목록 보기
3/21

치환 암호 ⭕

문제

https://www.codetree.ai/training-field/search/problems/substitution-cipher?&utm_source=clipboard&utm_medium=text

풀이

해당 문제는 원래 알파벳과 바뀌는 알파벳을 비교하여 하나씩 찾으면 되는 문제이다.

다만 비교할 알파벳들을 어떻게 넣는가?가 중요하다.

구조체, 클래스등 다양한 것을 사용할 수 있을 것 같지만, 가장 좋은 것은 map, 그 중에서도 unordered map인 것 같다.

  • map보다 더 빠른 탐색을 하기 위한 자료구조.
  • unordered_map은 중복된 데이터를 허용하지 않고 map에 비해 데이터가 많을 시 월등히 좋은 성능.
  • 하지만, key가 유사한 데이터가 많을 시 해시 충돌로 인해 성능이 떨어질 수 있음.
  • unordered map (key, value) 형태.

해당 자료구조를 사용하면 쉽게 문제를 풀 수 있을 것이다.

코드

#include <bits/stdc++.h>
using namespace std;

int main() {
    string encrypted, key;
    getline(cin, encrypted);
    cin >> key;

    // 암호화 규칙 저장 (unordered_map 사용)
    unordered_map<char, char> decryptionMap;
    for (int i = 0; i < 26; i++) {
        decryptionMap[key[i]] = 'a' + i;
    }

    string decrypted = "";
    for (char c : encrypted) {
        if (c == ' ') { // 공백 문자는 그대로 추가
            decrypted += c;
        } else {
            decrypted += decryptionMap[c]; // 복호화된 문자 추가
        }
    }

    cout << decrypted << endl;
    return 0;
}

profile
마약같은 코딩, 마약같은 코딩러

0개의 댓글

관련 채용 정보