본문 바로가기
Study (etc)/Problem Solving

[BOJ / C++] 25594번 : HG 음성기호

by Haren 2022. 12. 1.

문제

최근 해강이는 군대에 관심이 생겨 군대 관련 영상을 찾아 보고 있었다. 그러던 중 한 영상에서 '알파, 알파 여기는 브라보..' 이런 식으로 소통하는 모습을 봤다. 이 순간 해강이는 영상 속 인물들이 무슨 말을 하는지 궁금했고 이것이 NATO 표준음성기호였음을 알게 됐다. 그래서 해강이는 NATO 기호를 본따 자신만의 음성 기호인 HG 표준음성기호를 만들었다. 신이 난 해강이는 친구들에게 자신이 만든 HG 표준음성기호를 알려주고 이것으로 소통하자고 했다. 그런데 해강이의 친구 중 한 명인 영재는 HG 표준 음성기호를 이해하지 못해 해강이와의 소통에 어려움을 겪고 있다. 이런 영재를 위해 랜덤한 문자열이 주어지면 해당 문자열이 올바른 HG 표준음성 기호들로 표현되었는지 알려주고 올바르게 표현되었다면 원래 단어를 알려주자!

다음은 해강이가 만든 HG 표준음성기호 표이다.

a aespa
b baekjoon
c cau
d debug
e edge
f firefox
g golang
h haegang
i iu
j java
k kotlin
l lol
m mips
n null
o os
p python
q query
r roka
s solvedac
t tod
u unix
v virus
w whale
x xcode
y yahoo
z zebra

입력

첫째 줄에 문자열 S가 주어진다.

문자열 S는 HG 표준 음성기호단어로 이루어질 수도 있고 아닐 수도 있다. (1≤|S|≤8×106)

모든 입력은 알파벳 소문자로만 주어진다.

출력

주어진 문자열 S가 전부 HG 표준 음성기호로 이루어 있다면, "It's HG!"를 출력하고 다음 줄에 원래 단어를 출력한다.

그렇지 않다면, 원래 단어를 알 수 없기에 "ERROR!"을 출력한다.

Solved.ac 레벨

실버 V

풀이

#include <bits/stdc++.h>

using namespace std;

string hg[26] = {"aespa", "baekjoon", "cau", "debug", "edge", "firefox", "golang", "haegang", "iu", "java", "kotlin", "lol", "mips", "null", "os", "python", "query", "roka", "solvedac", "tod", "unix", "virus", "whale", "xcode", "yahoo", "zebra" };
string input;
string ans = "";

int main(){
    ios::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);

    cin >> input;
    
    for(int i = 0; i < input.length();){
        char curInput = input[i]; //input 문자열에서의 현재 위치
        string curHg = hg[input[i]-97]; //현재 위치의 알파벳의 hg 문자열 curInput이 a일시 hg[0] == aespa
        for(int j = 0; j < curHg.length(); j++){
            //curHg의 문자열의 길이만큼 비교

            //현재 input에서의 위치에서 비교해야할 hg코드와 비교.
            if(input[i + j] != curHg[j]){
                cout << "ERROR!\n";
                return 0;
            }
        }
        ans += curInput;
        i += curHg.length();
    }

    cout << "It's HG!\n";
    cout << ans << '\n'; 


    return 0;
}

입력받은 문자열에서 한 문자를 얻어낸 후, 그 글자에 해당하는 HG 음성기호의 길이만큼 반복하며 문자열 안에 HG 음성기호가 포함되어 있는지를 판별한 후, 해당 문자로부터 시작되어 HG 음성기호가 포함되어 있다면 해당 문자를 답에 포함시키고 반복문의 인덱스를 현재 탐색하고 있던 HG 음성기호의 문자열의 길이만큼 증가시켜 다음 문자를 얻어내는 것을 반복한다.

 

 

25594번: HG 음성기호

최근 해강이는 군대에 관심이 생겨 군대 관련 영상을 찾아 보고 있었다. 그러던 중 한 영상에서 '알파, 알파 여기는 브라보..' 이런 식으로 소통하는 모습을 봤다. 이 순간 해강이는 영상 속 인물

www.acmicpc.net