프로그래머스_C#/Level_1

[프로그래머스 C#] 시저 암호

최애뎡 2021. 8. 21. 00:10
728x90
반응형

 

https://programmers.co.kr/learn/courses/30/lessons/12926

 

코딩테스트 연습 - 시저 암호

어떤 문장의 각 알파벳을 일정한 거리만큼 밀어서 다른 알파벳으로 바꾸는 암호화 방식을 시저 암호라고 합니다. 예를 들어 "AB"는 1만큼 밀면 "BC"가 되고, 3만큼 밀면 "DE"가 됩니다. "z"는 1만큼 밀

programmers.co.kr

using System.Text;

public class Solution {
    public string solution(string s, int n) {
        StringBuilder answer = new StringBuilder();
        
        for (int i = -1; ++i < s.Length;)
        {
            int temp = s[i];
            
            if (s[i] == ' ') 
            {
                answer.Append(" ");
                continue;
            }
            
            if (temp >= 'a' && temp <= 'z')
            {
                temp += n % 26;
                if (temp > 'z') temp -= 26;
            }
            
            if (temp >= 'A' && temp <= 'Z')
            {
                temp += n % 26;
                if (temp > 'Z') temp -= 26;
            }
                        
            answer.Append((char)temp);
        }
        
        return answer.ToString();
    }
}

문제가 지저분할 수도 있기 때문에 StringBuilder 사용하고

공백 넘기고 

대소문자 구분하고

알파벳 26개니까 26으로 나눈 나머지 더해주고(지저분할 수도 있)

각 범위 넘어가면 -26 해주고

StringBuilder -> .ToString()까지

반응형