-
[Baekjoon(백준)][29701] 모스 부호 해독(C++)2024년 11월 01일
- 유니얼
-
작성자
-
2024.11.01.:52
728x90이 문제는 알파벳, 숫자, 특정 기호들을 모스 부호로 변환한 문자열을 해독하는 문제입니다. 각 문자는 '.'와 '-'로 이루어진 모스 부호로 변환되며, 주어진 모스 부호를 원래의 문자열로 복원해야 합니다.
문제의 조건은 다음과 같습니다:
- 문자열의 길이 N이 주어집니다.
- 공백으로 구분된 모스 부호 메시지가 주어집니다.
- 주어진 모스 부호를 해독하여 원래 문자열을 출력합니다.
문제 링크 :
https://www.acmicpc.net/problem/29701
접근 전략
- 모스 부호 매핑: 각 알파벳, 숫자, 기호를 모스 부호와 매핑하는 자료구조(std::map)를 생성합니다.
- 모스 부호 해독: 입력받은 각 모스 부호를 해독하여 대응되는 문자를 출력합니다.
해결 방법
- 모스 부호 매핑: std::map을 사용하여 모스 부호와 문자/숫자/기호를 매핑합니다.
- 입력 처리 및 해독: 주어진 모스 부호를 벡터에 저장한 후, 각각의 모스 부호를 찾아 대응되는 문자를 출력합니다.
코드 구현
// ConsoleApplication1.cpp : 이 파일에는 'main' 함수가 포함됩니다. 거기서 프로그램 실행이 시작되고 종료됩니다. // #include <iostream> #include <map> #include <string> #include <vector> using namespace std; static const std::map<std::string, std::string> morseCodeMap = { {".-", "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"}, {".----", "1"}, {"..---", "2"}, {"...--", "3"}, {"....-", "4"}, {".....", "5"}, {"-....", "6"}, {"--...", "7"}, {"---..", "8"}, {"----.", "9"}, {"-----", "0"}, {"--..--", ","}, {".-.-.-", "."}, {"..--..", "?"}, {"---...", ":"}, {"-....-", "-"}, {".--.-.", "@"} }; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int n = 0; std::cin >> n; vector<string> moses(n); string str = ""; for(int i = 0; i < n; i++) { std::cin >> str; moses.push_back(str); } for(string s : moses) { auto it = morseCodeMap.find(s); if(it != morseCodeMap.end()) { std::cout << it->second; } } return 0; }
코드 설명
- 입력 처리: std::cin으로 모스 부호 문자열을 벡터에 저장합니다.
- 모스 부호 매핑: std::map을 이용하여 각 모스 부호를 대응되는 문자로 변환합니다.
- 출력: 변환된 각 문자를 공백 없이 출력합니다.
결론
이 문제는 모스 부호와 문자를 매핑하여 간단한 해독기를 만드는 문제입니다. std::map을 사용하여 효과적으로 문자 변환을 처리할 수 있었습니다.
반응형다음글이전글이전 글이 없습니다.댓글
스킨 업데이트 안내
현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드
받을 수 있는 페이지로 이동하시겠습니까?
("아니오" 를 선택할 시 30일 동안 최신 버전이
감지되어도 모달 창이 표시되지 않습니다.)