[백준 26906] Vikingahackare (C#, C++) - soo:bak
작성일 :
문제 링크
설명
바이킹들의 룬 문자
를 해석한다는 내용의 재미있는 구현 문제입니다.
문제의 목표는 바이킹이 사용한 룬 문자
를 번역하는 것 입니다.
번역을 위해서 이진수
로 구성된 문자열이 주어지며, 만약 번역할 수 없는 룬 문자
라면 ?
를 대신 출력합니다.
룬 문자
와 이진수
의 관계를 저장하기 위하여 map(C++), dictionary(C#)
자료구조를 선택하였습니다.
이후, 번역해야 하는 문자열을 4
자 단위로 자른 후, 해당 이진수
가 매핑되어 있는지 확인합니다.
이진수
가 매핑되어 있으면, 해당룬 문자
를 결과 문자열에 추가합니다.이진수
가 매핑되어 있지 않으면,?
를 결과 문자열에 추가합니다.
최종적으로, 해독한 결과 문자열을 출력합니다.
Code
[ C# ]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
namespace Solution {
class Program {
static void Main(string[] args) {
var cntCode = int.Parse(Console.ReadLine()!);
var decodeDictionary = new Dictionary<string, char>();
for (var i = 0; i < cntCode; i++) {
var input = Console.ReadLine()?.Split(' ');
var c = input![0][0];
var code = input![1];
decodeDictionary[code] = c;
}
var rune = Console.ReadLine()!;
var ans = "";
for (var i = 0; i < rune.Length; i += 4) {
var subStr = rune.Substring(i, 4);
if (decodeDictionary.ContainsKey(subStr))
ans += decodeDictionary[subStr];
else ans += "?";
}
Console.WriteLine(ans);
}
}
}
[ C++ ]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <bits/stdc++.h>
using namespace std;
typedef map<string, char> msc;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int cntCode; cin >> cntCode;
msc decodeMap;
for (int i = 0; i < cntCode; ++i) {
char c; string code; cin >> c >> code;
decodeMap[code] = c;
}
string rune; cin >> rune;
string ans = "";
for (size_t i = 0; i < rune.length(); i += 4) {
string substring = rune.substr(i, 4);
if (decodeMap.find(substring) != decodeMap.end())
ans += decodeMap[substring];
else ans += "?";
}
cout << ans << "\n";
return 0;
}