Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
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 30 31
Tags more
Archives
Today
Total
관리 메뉴

luke

[프로그래머스] - 시저 암호 (자바/Java) 본문

알고리즘문제/프로그래머스(Java)

[프로그래머스] - 시저 암호 (자바/Java)

luke-king 2024. 6. 2. 17:01

 

 

 

 

 

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

 

 

 

 

 

 

 

 

 

문제.


 

 

 

 

 

 

 

 

풀이.


 

class Solution {
    public String solution(String s, int n) {
        String answer = "";
        char[] split = s.toCharArray();
        
        int big = (int)'Z' - (int)'A' + 1;
        int small = (int)'z' - (int)'a' + 1;

        for (int i =0;i<split.length;i++){
        
        if (split[i] != ' ') {
            if ((int)'Z' < ((int) split[i]) + n && (int)split[i] <=90) {
                split[i] = (char) (  ((int)split[i]) + n - big);
            }else if ((int)'z' < ((int) split[i]) + n){
                split[i] = (char) (  ((int)split[i]) + n - small);
            }else{
                split[i] = (char)(((int)split[i])+n);
            }
        }
        answer += split[i];

        }
        return answer;
    }
}

 

오늘 문제는 프로그래머스 " 시저 암호 " 문제다.

아스키코드를 바탕으로 문제를 풀었으며 바로 문제 풀이를 해보겠다.

 

1. 문자열 입력받은 값들을 toCharArray() 함수를 사용해 한 문자씩 배열로 담아준다.

 

2. 변수 big, small이 있는데 big은 대문자 아스키코드 값 small은 소문자 아스키코드 값으로 나타냈다.

 

3. 입력한 문자열 길이 만큼 반복을 하며 문제 중 3번 예제는 공백을 그대로 출력해야 해서 공백이 아닐 경우라는 조건식을 걸어 줬다.

 

4. 사실 n입력값을 받아 이동한 문자 출력은 어렵지 않았다고 생각 든다. 다만 z에서 1입력을 받으면 a로 넘어가야 하기에 char타입인 문자 값들을 int형변환을 통해 아스키코드 숫자 값을 나타낸다.

 

5. 아스키코드 값을 나타냈을때 z의 아스키코드 값이 split[i] 보다 작다면 split[i]는 split[i] 값 + n(이동 횟수) 값 - big 또는 small의 길이를 빼야 알파벳 처음인 A, a로 넘어간다.

 

6. 나머지는 split[i] 값 + n(이동 횟수)을 출력하면 끝이다.