https://school.programmers.co.kr/learn/courses/30/lessons/120838
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
#include <string>
#include <vector>
using namespace std;
string solution(string letter) {
string answer = "";
string arr[26] = { ".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--.." };
string im = "";
for (int i = 0; i < letter.length(); i++)
{
if (letter[i] == ' ')
{
for (int j = 0; j < 26; j++)
{
if (im == arr[j])
{
answer += ('a' + j);
im = "";
}
}
}
else
{
im += letter[i];
}
}
for (int j = 0; j < 26; j++)
{
if (im == arr[j])
{
answer += ('a' + j);
im = "";
}
}
return answer;
}
설명
주어진 letter 문자를 주어진 (모스부호: 알파벳) 을 이용해 알파벳 소문자의 문자열로 바꾸는 문제이다.
모스부호를 string 배열 arr 에 저장해놓는다.
for문을 돌면서 letter[i] 가 ' ' 즉, 공백일 때까지 im 문자열에 letter[i] 를 더한다.
공백이 나오면 im문자열이랑 같은 문자열을 arr 문자열 배열에서 찾는다.
해당하는 알파벳을 더한다.
answer += ('a' + j);
이 코드는 아스키코드를 이용한 것인데 예를들어, 모스부호가 b를 나타냈다면 j는 1일 것이다.
'a' 의 아스키코드가 97 이고 'b' 는 98 이다. 따라서 97 + 1 로 b가 answer 에 더해지게 된다.
'알고리즘 > 프로그래머스 1단계' 카테고리의 다른 글
프로그래머스 - 문자열 밀기 - C++ (0) | 2023.09.05 |
---|---|
프로그래머스 - 캐릭터의 좌표 - C++ (0) | 2023.09.04 |
프로그래머스 - 진료순서 정하기 - C++ (0) | 2023.09.02 |
프로그래머스 - 소인수분해 - C++ (0) | 2023.09.01 |
프로그래머스 - 영어가 싫어요 - C++ (0) | 2023.08.31 |