-
JUNGOL 실력키우기 문자열 - 암호풀기(Message Decowding)보관함 2020. 2. 10. 10:42
기초 다지기에서 배운 내용을 응용하여 문제를 해결해야 하는 실력 키우기입니다.
실력 키우기는 비슷한 문제 유형별로 묶어서 풀어보겠습니다.
이번 포스팅에서는 문자열의 암호풀기 문제를 풀어보겠습니다.
1880 : 암호풀기(Message Decowding)
이 문제는 입력된 복호화 키를 값으로 하는 맵을 만들어 대치시켜주면 되는 간단한 문제입니다.
그런데 c++의 getline이 안먹어요. 심지어 이번에는 cin의 clear와 ignore 메소드를 넣어도 성공하지 못합니다.
#include <iostream> #include <string> #include <map> using namespace std; int main(void) { string str; cin >> str; map<char, char> keyMap; char c{ 'a' }; for (int i{ 0 }; c <= 'z'; ++i, ++c) { keyMap[c] = str[i]; } cin.clear(); cin.ignore(9999999, '\n'); getline(cin, str); for (int i = 0; i < str.size(); ++i) { char c{ static_cast<char>(tolower(str[i])) }; bool isCapital{ c != str[i] }; str[i] = isCapital ? static_cast<char>(toupper(keyMap[c])) : keyMap[c]; } cout << str << endl; }
코드의 제출 결과는 다음과 같습니다.
이 문제도 문의를 넣고 결과가 나오면 포스팅하겠습니다.
http://www.jungol.co.kr/bbs/board.php?bo_table=pbank&wr_id=1153&sca=2050