일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 버스 API
- Excel Cell Format
- DrawRectangle
- Winform
- JSON
- c#
- MVC
- TDD
- 공공 데이터 포털
- MDB Connect
- 디자인 패턴
- MDB Select
- DrawEllipse
- solid
- C# MDB
- 시
- eventargs
- 객체지향
- 경기도 버스
- 경기도 버스정보시스템
- delegate
- sqlite3
- GDI+
- Cell Border Style
- WPF
- eventhandler
- C# 파일 암/복호화
- C# MDB Handle
- Json.NET
- NUnit
- Today
- Total
White Whale Studio
[알고리즘] 모스부호 해독 / C# 풀이 본문
모스부호 해독입니다. 문제는 http://codingdojang.com/scode/469
위의 코딩도장의 문제입니다.
솔직히 부끄럽네요;;;
풀이를 보면 굉장히 간단하게 푸신분들도 많은데 저는 자료형에대한 이해도가 부족한건지 영 지저분하네요..ㅠㅠ
콘솔로 짰으며 호출은 Main 함수에서 parse 함수를 호출하여 테스트했습니다.
주어진 모스 부호는
.... . ... .-.. . . .--. ... . .- .-. .-.. -.--
이며
해석하게 되면 he sleeps early 가 나와야합니다.
글자와 글자 사이는 공백 하나, 단어와 단어 사이는 공백 두개로 구분합니다.
public class Morse
{
// 배열로 알파벳과 매칭되는 모스부호를 선언합니다.
static string[] aArr = new string[26] { "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" };
static string[] mArr = new string[26] {".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--.."};
static string results = "";
public static string parse(string morseStr)
{
string temp = morseStr.Replace(" ", "/"); // 우선 구분을 위해 공백 두칸을 /로 치환합니다.
temp = temp.Replace(" ", "_"); // 치환된 문자열에서 알파벳별로 구분하기위해 공백 한칸을 '_' 로 치환합니다.
string[] arr = temp.Split('/'); // 모스 부호를 단어별로 분리합니다.
for (int i = 0; i < arr.Length; i++)
{
results += getWord(arr[i]) + " "; // 분리된 단어별 배열을 함수를 통해 얻어 순차적으로 더합니다.
}
return results;
}
// 단어를 얻는 함수입니다. 모스부호로 구성된 단어를 알파벳(으로 가정)으로 분리하여 GetAlphabet 함수를 통해
// 얻은 알파벳을 더하여 단어를 완성한 후 완성된 단어를 Return 합니다.
public static string getWord(string str)
{
string word = "";
string[] warr = str.Split('_'); // 알파벳별로 분리하여 검색
for (int i = 0; i < warr.Length; i++)
{
word += GetAlphabet(warr[i]);
}
return word;
}
// 알파벳을 얻는 함수입니다. 배열루프를 돌면서 맞는 알파벳을 반환합니다.
public static string GetAlphabet(string str)
{
string results = "";
for (int i = 0; i < mArr.Length; i++)
{
if (str.Equals(mArr[i]))
{
results = aArr[i];
}
}
return results;
}
}
'IT Engineering > 코딩놀이' 카테고리의 다른 글
[알고리즘] 피보나치 수열 구하기 / C# 풀이 (0) | 2015.04.24 |
---|---|
[알고리즘] 최소값 구하기 / C# 풀이 (0) | 2015.04.24 |
[알고리즘] Insertion Sort(삽입 정렬) / C# 풀이 (0) | 2015.04.22 |
[알고리즘] 게시판 페이징 / C# 풀이 (0) | 2015.04.21 |