inblog logo
|
LHS's Study Space
    알고리즘문제풀기C#

    [알고리즘 문제 풀기] Virus(13775)

    C#
    lhs's avatar
    lhs
    May 08, 2025
    [알고리즘 문제 풀기] Virus(13775)
    Contents
    1. 문제 풀이 아이디어2. 나의 정답 코드3. 정리
    www.acmicpc.net
    https://www.acmicpc.net/problem/13775
    notion image

    1. 문제 풀이 아이디어

    • 문자열의 각 문자를 입력 숫자만큼 왼쪽으로 시저 암호 방식으로 이동하되, 문자가 영문 소문자인 경우에만 적용하고, 이동 값은 매번 1~25 사이로 순환해 문제를 해결할 수 있다.

    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()); string line = sr.ReadLine(); for (int i = 0; i < line.Length; i++) { char c = line[i]; if (c < 'a' || 'z' < c) { sb.Append(c); continue; } int nc = (c - n - 'a' + 26) % 26; n = n % 25 + 1; sb.Append((char)('a' + nc)); } sw.WriteLine(sb); }

    3. 정리

    • for문으로 각 문자를 순회한다.
    • 문자가 소문자 범위('a'~'z')가 아니면 그대로 추가한다.
    • 소문자인 경우, (c - n - 'a' + 26) % 26으로 왼쪽으로 n만큼 이동한 문자를 구한다.
    • 이동 후 n = n % 25 + 1;로 다음 이동 값 n을 갱신한다.
    • 문자를 StringBuilder에 누적하고, 마지막에 출력한다.
    Share article
    Contents
    1. 문제 풀이 아이디어2. 나의 정답 코드3. 정리

    LHS's Study Space

    RSS·Powered by Inblog