시저 암호
문제정의
시저 암호를 프로그래밍하는 문제이다. 시저 암호를 만드는 방법은 문자열을 아스키코드로 n만큼 미뤄서 만들면 된다. 가령 abc가 있고 2가 주어진다면 cde이런식으로 만들 수 있다. 문제에서 알파벳에 대해서만 만들고 공백은 건들지 말라 했으므로, 알파벳에 대해서만 처리를 해주면 된다.
문제풀이
전체 코드는 다음과 같다. 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30public class CaesarCode {
//프로그래머스 문제풀이 level1 시저 암호
public static void main(String[] args)
{
String s = "AB";
int n = 1;
StringBuffer buff = new StringBuffer();
for(int i = 0; i < s.length(); i++)
{
char c = s.charAt(i);
int ascii = (int) c;
if(ascii >= 65 && ascii <= 90)
{
ascii += n;
if(ascii > 90)
ascii -= 26;
}
else if(ascii >= 97 && ascii <= 122)
{
ascii += n;
if(ascii > 122)
ascii -= 26;
}
buff.append(String.valueOf((char) ascii));
}
String answer = buff.toString();
}
}
테스트
필자의 경우 26을 빼주는 식으로 했는데 조금 다르게 풀 수도 있다. 주어진 문자가 소문자인지 대문자인지 판별한 후에(자바에는 친절하게 이 메소드를 제공한다.) 만약 소문자라면
((c - 'a')+n)%26 + 'a'
이런식으로 구할 수도 있다.