2024. 10. 10. 04:45ㆍIT/BaekJoon
문제 링크
https://www.acmicpc.net/problem/9226
문제
도깨비말은 언어 유희 중 하나로, 글자를 특정 법칙에 따라 재구성하는 것을 말한다.
영어권에서는 피그라틴어라는 것이 있다. 주로 어린이들이 많이 쓰는 데, 남들에게 무슨 말인지 모르게 하기 위해 종종 쓴다.
여기엔 규칙이 있는데, 맨 앞글자가 모음이 아닐때 까지 맨 앞 글자를 어미로 돌린 후 그 끝에 ay를 붙여서 완성한다. 예를 들면 frog는 ogfray이 된다. 만약 맨 앞자음이 없는 apple과 같은 경우는 끝에 ay만 붙여 appleay가 된다. 또는, 단어에 모음이 없는 경우에도 단어의 끝에 ay만 붙인다.
주어진 단어를 피그라틴어로 바꾸는 프로그램을 작성하시오.
입력
한 줄에 하나의 단어씩 주어진다. 그리고 마지막 줄에 #을 입력받고 끝낸다.
주어진 단어는 20자를 넘지 않고 공백없이 소문자로만 이루어져있다. 여기서 모음이란 'a', 'e', 'i', 'o', 'u' 를 말한다.
출력
한 줄에 하나씩 피그라틴어를 출력한다.
통과한 답안
using System.Text;
namespace _9226
{
internal class Program
{
static void Main(string[] args)
{
HashSet<char> chars = new HashSet<char>("aeiou");
while (true)
{
string input = Console.ReadLine();
if (input == "#")
{
return;
}
StringBuilder sb = new StringBuilder();
int idx = 0;
for (int i = 0; i < input.Length; i++)
{
if (chars.Contains(input[i]))
{
idx = i;
break;
}
}
sb.Append(input, idx, input.Length - idx);
sb.Append(input, 0, idx);
sb.Append("ay");
Console.WriteLine(sb.ToString());
}
}
}
}
주어진 문자열에서 처음으로 모음이 나올때까지
나왔던 자음들을 순서대로 문자열의 뒤로 보내고,
"ay"를 문자열에 맨 뒤에 추가한 후에 출력하는 문제이다.
StringBuilder와 HashSet을 이용하여 풀이하였는데,
HashSet을 이용하여 모음이 나오는지 확인하고,
StringBuilder를 이용하여 필요한 문자들을 수정하도록 구현하였다.
'IT > BaekJoon' 카테고리의 다른 글
[BAEKJOON] 백준 30045: ZOAC 6 (C#) (1) | 2024.10.16 |
---|---|
[BAEKJOON] 백준 2852: NBA 농구 (C#) (11) | 2024.10.15 |
[BAEKJOON] 백준 5598: 카이사르 암호 (C#) (0) | 2024.10.10 |
[BAEKJOON] 백준 15963: CASIO (C#) (0) | 2024.10.10 |
[BAEKJOON] 백준 5555: 반지 (C#) (0) | 2024.09.26 |