※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※

 

이번에 볼 문제는 백준 25594번 문제인 HG 음성기호이다.
문제는 아래 링크를 확인하자.

https://www.acmicpc.net/problem/25594 

 

25594번: HG 음성기호

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

www.acmicpc.net

주어진 문자열의 읽을 차례의 첫 글자가 무엇인지를 확인한 뒤, 그 글자와 대응되는 HG 음성기호와 대조하는 것을 반복해 문제를 해결하자.

 

문제에 주어진 표를 그대로 복붙한 문자열을 별도의 코드를 작성해 전처리하는 것으로 HG 음성기호 테이블을 편하게 작성할 수 있다.

 

아래는 제출한 소스코드이다.

#include <iostream>
#include <string>
using namespace std;

string HG[128];

int main() {
	ios::sync_with_stdio(0);
	cin.tie(0);

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

	string s; cin >> s;
	int slen = s.length();
	int idx = 0;
	string ans = "";
	while (idx < slen) {
		string& tmp = HG[s[idx]];
		int tmplen = tmp.length();
		if (idx + tmplen <= slen) {
			if (s.substr(idx, tmplen) == tmp) {
				ans += s[idx];
				idx += tmplen;
			}
			else {
				cout << "ERROR!";
				return 0;
			}
		}
		else {
			cout << "ERROR!";
			return 0;
		}
	}

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

+ Recent posts