[백준 5358] Football Team (C#, C++) - soo:bak
작성일 :
문제 링크
설명
문자열에 대한 간단한 구현 문제입니다.
문제에서 설명하는 내용은 다음과 같습니다.
- 축구 코치의 키보드가 고장나서, 선수들의 이름 중 ‘i’ 와 ‘e’ 문자가 서로 뒤바뀌었다. (소/대문자 포함)
- 뒤바뀌기 전의 올바른 선수의 이름을 출력해야 한다.
위 조건들을 참고하여, 입력으로 주어진 잘못된 선수들의 이름을 올바른 선수들의 이름으로 바꾸어 출력합니다.
문제를 해결하기 위해 적당한 자료구조로,
C# 에서는 Dictionary
, List
, C++ 에서는 map
과 vector
자료구조를 선택하였습니다.
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
namespace Solution {
class Program {
static string TranslateCorrectName(string name) {
var missSpellDict = new Dictionary<char, char> { {'e', 'i'}, {'i', 'e'}, {'E', 'I'}, {'I', 'E'} };
var correctsNameList = new List<char>();
foreach (char word in name) {
if (missSpellDict.ContainsKey(word))
correctsNameList.Add(missSpellDict[word]);
else correctsNameList.Add(word);
}
return new string(correctsNameList.ToArray());
}
static void Main(string[] args) {
while (true) {
string? fullName = Console.ReadLine();
if (fullName == null) break ;
Console.WriteLine(TranslateCorrectName(fullName));
}
}
}
}
[ 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;
string TranslateCorrectName(const string& name) {
map<char, char> missSpellDict = { {'e', 'i'}, {'i', 'e'},
{'E', 'I'}, {'I', 'E'} };
vector<char> correctsNameList;
for (char word : name) {
if (missSpellDict.find(word) != missSpellDict.end())
correctsNameList.push_back(missSpellDict[word]);
else
correctsNameList.push_back(word);
}
return string(correctsNameList.begin(), correctsNameList.end());
}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
while (true) {
string fullName;
if (!getline(cin, fullName)) break ;
cout <<TranslateCorrectName(fullName) << "\n";
}
return 0;
}