[알고리즘 문제 풀기] 비밀 편지(5426)

C#
lhs's avatar
Feb 02, 2025
[알고리즘 문제 풀기] 비밀 편지(5426)
notion image

1. 문제 풀이 아이디어

  • 주어진 문자열을 n x n 크기의 정사각형으로 간주하고, 90도 회전하여 문제를 해결할 수 있다.

2. 나의 정답 코드

StreamReader sr = new(Console.OpenStandardInput()); StreamWriter sw = new(Console.OpenStandardOutput()); int t = int.Parse(sr.ReadLine()); for (int i = 0; i < t; i++) { string s = sr.ReadLine(); char[] result = new char[s.Length]; int n = (int)Math.Sqrt(s.Length); for (int x = 0; x < n; x++) { for (int y = 0; y < n; y++) { result[x * n + y] = s[y * n + n - x - 1]; } } sw.WriteLine(result); } sr.Close(); sw.Close();

3. 정리

  • n = sqrt(문자열 길이)를 계산하여 정사각형의 크기를 구한다.
  • 2중 for문을 사용하여 기존 위치 (y, n - x - 1)에서 회전 후 위치 (x, y)로 문자를 이동한다.
  • result 배열을 사용하여 변환된 문자열을 저장한 후 출력한다.
Share article

LHS's Study Space