본문 바로가기
프로그래머스/[프로그래머스 - JAVA] Lv.1

[프로그래머스 - JAVA] 시저 암호

by 코딩하는 흰둥이 2023. 4. 2.

 


  • 내 풀이
class Solution {
    public String solution(String s, int n) {
        String answer = "";
        
        // 문자열을 숫자로 바꾸기 위한 변수
        int change = 0;
        for (int i = 0; i < s.length(); i++) {
            // 문자열에 띄어쓰기가 있을 때
            if (" ".equals(String.valueOf(s.charAt(i)))) {
                answer += " ";
            } else {
                // 문자열에서 한글자만 charAt으로 가져오고 (int)를 붙여서 글자의 아스키코드를 가져오고 +n 만큼 이동시킨다
                change = (int) s.charAt(i) + n;

			// 문자열이 대문자 A에서 대문자 Z 사이 일때
                if (65 <= (int) s.charAt(i) && (int) s.charAt(i) <= 90) {
                    if (change > (int) 'Z') {
                        answer += (char) ((int) 'A' + change - (int) 'Z' - 1);
                    } else {
                        answer += (char) change;
                    }

                    // 문자열이 소문자 a 에서 소문자 z 사이 일때
                } else if (97 <= (int) s.charAt(i) && (int) s.charAt(i) <= 122) {
                    // 문자열이 소문자 이지만 +n 만큼 이동시켰을 때 z를 넘어간다면 a로 넘어가야함
                    if (change > (int) 'z') {
                        answer += (char) ((int) 'a' + change - (int) 'z' - 1);
                    } else {
                        // +만큼 이동시킨 문자열 값이 z 보다 작으면 그대로 문자열로 변환
                        answer += (char) change;
                    }
                    // 문자열이 대문자 A에서 대문자 Z 사이 일때
                }
            }
        }
        
        return answer;
    }
}

'z' 와 'Z' 를 넘어갈때만 주의해주면 된다

문자열에 띄어쓰기 확인 할때 ' ' == s.charAt 으로도 가능한데

" "로 확인했다  다음에는 제대로 비교할것... 

 

  • 다른 사람 풀이
class Solution {
        public String solution(String s, int n) {
            String answer = "";
            for(char ch : s.toCharArray()) {
                if(ch==' ') {
                    answer += ch;
                }else if(ch>='a'&& ch<='z'){
                    answer += (char)('a' + (ch+n-'a')%26);
                }else {
                    answer += (char)('A' + (ch+n-'A')%26);
                }
            }
            System.out.println(answer);
            return answer;
        }
    }

 

 

댓글