본문 바로가기
JAVA/Coding Test Study

[Lv.1] 프로그래머스 - 시저 암호 : Java

by ♡˖GYURI˖♡ 2024. 4. 19.
728x90
 

프로그래머스

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

programmers.co.kr

 

 

 

이해하기

처음에는 대문자를 생각하지 않고 풀이해서 'z'일 경우만 처리했다가 실패했다.

문제를 잘 읽는 습관을 들여야하는데...

 

  • s를 charArray로 만들어 순회
  • c가 공백이면 공백을 sb.append 후 continue
  • c가 소문자일 때
    • c + n이 'z'를 넘어간다면 c + n - 26 해줄 것
    • 아니라면 c + n 
  • c가 대문자일 때
    • c + n이 'Z'를 넘어간다면 c + n - 26
    • 아니라면 c + n

 

문제풀이

import java.util.*;

class Solution {
    public String solution(String s, int n) {
        StringBuffer sb = new StringBuffer();
        
        for (char c : s.toCharArray()) {
            if (c == ' ') {
                sb.append(" ");
                continue;
            }
            
            if (c >= 'a' && c <= 'z') {
                if (c + n > 'z') {
                    sb.append((char)(c - 26 + n));
                } else {
                    sb.append((char)(c + n));
                }   
            }
            
            if (c >= 'A' && c <= 'Z') {
                if (c + n > 'Z') {
                    sb.append((char)(c - 26 + n));
                } else {
                    sb.append((char)(c + n));
                }   
            }
        }
        
        return sb.toString();
    }
}