[Programmers] 시저 암호 - 연습문제

동민·2021년 3월 10일
0
// 시저 암호 - 연습문제
public class CaesarCipher { // ASCII 코드를 활용하면 이중 루프 안써도 됨

	public String solution(String s, int n) {
		char[] arr = s.toCharArray();

		for (int i = 0; i < arr.length; i++) {
			for (int j = 0; j < n; j++) {
				if (arr[i] == ' ') {
					arr[i] = ' ';
				} else if (arr[i] == 'z') {
					arr[i] = 'a';
				} else if (arr[i] == 'Z') {
					arr[i] = 'A';
				} else {
					arr[i]++;
				}
			}
		}

		return String.valueOf(arr); // char[] -> String
	}

	// ASCII 이용
	public String solution1(String s, int n) {
		char[] arr = s.toCharArray();

		for (int i = 0; i < arr.length; i++) {

			if (arr[i] >= 'a' && arr[i] <= 'z') {
				arr[i] = (char) (arr[i] + n);
				if (arr[i] > 'z') {
					arr[i] = (char) ('a' + arr[i] - 'z' - 1);
				}

			} else if (arr[i] >= 'A' && arr[i] <= 'Z') {
				arr[i] = (char) (arr[i] + n);
				if (arr[i] > 'Z') {
					arr[i] = (char) ('A' + arr[i] - 'Z' - 1);
				}

			} else {
				arr[i] = ' ';
			}
		}

		return String.valueOf(arr); // char[] -> String
	}

	public static void main(String[] args) {

		CaesarCipher s = new CaesarCipher();

		System.out.println(s.solution1("AB", 1)); // "BC"
		System.out.println(s.solution1("z", 1)); // "a"
		System.out.println(s.solution1("a B z", 4)); // "e F d"

	}

}
profile
BE Developer

0개의 댓글