[알고리즘 문제 풀기] String Transformations(5219)

C#
lhs's avatar
May 31, 2025
[알고리즘 문제 풀기] String Transformations(5219)
notion image

1. 문제 풀이 아이디어

  • 문자열을 for문으로 순회하며 첫 번째로 일치하는 문자만 변환해 문제를 해결할 수 있다.

2. 나의 정답 코드

using System.Text; StringBuilder sb = new StringBuilder(""); using (StreamReader sr = new StreamReader(Console.OpenStandardInput())) using (StreamWriter sw = new StreamWriter(Console.OpenStandardOutput())) { int n = int.Parse(sr.ReadLine()); while (n-- > 0) { string[] lhsrhs = sr.ReadLine().Trim().Split(); string[] split = sr.ReadLine().Trim().Split(); for (int i = 0; i < split.Length; i++) { for (int j = 0; j < lhsrhs.Length; j += 2) { for (int k = 0; k < split[i].Length; k++) { if (split[i][k] == lhsrhs[j][0]) { split[i] = split[i].Substring(0, k) + lhsrhs[j + 1] + split[i].Substring(k + 1); break; } } } } sb.AppendLine("Transformed strings: " + String.Join(" ", split)); } sw.Write(sb); }

3. 정리

  • 각 단어(split[i])마다 모든 변환 쌍(lhsrhs[j])을 확인한다.
  • 변환 쌍의 문자 중 해당 단어에 포함된 문자가 있다면, 첫 번째로 일치하는 위치를 찾아 변환 후 문자로 한 번만 치환한다.
  • Substring(0, k) + 변환문자 + Substring(k + 1) 방식으로 해당 위치의 문자만 대체한다.
  • 모든 변환이 끝난 후 결과를 StringBuilder에 저장하고, 최종적으로 한 번에 출력해 문제를 해결한다.
Share article

LHS's Study Space