PS/Programmers

[level1, Character] 시저 암호

git-sun 2023. 3. 24. 00:16

1. 문제

 

 

 

 

 

 

 

2. 문제 해결 논리

1. 문제 이해

  • 주어진 것
    • String s    //주어진 알파벳 문자열
    • int n    //밀어낼 수
  • 요구되는 것
    • n만큼 밀어내고 난 문자열

2. 데이터 구조 결정

  • StringBuilder, 반복문, Character 클래스 사용

3. 알고리즘 설계

  • 반복문을 통해서 주어진 문자열을 하나씩 순회
  • 조건문에 넣을 조건으로 Character 클래스의 isLowerCase, isUpperCase 메서드 사용
  • StringBuilder에 추가 및 String으로의 변환

 

 

 

 

 

 

3. 코드 구현

class Solution {
    public String solution(String s, int n) {
        StringBuilder result = new StringBuilder();
        
        //문자열 s을 하나씩 순회
        for (int i = 0; i < s.length(); i++) {
            char ch = s.charAt(i);
            
            //문자 ch가 소문자라면
            if (Character.isLowerCase(ch)) {
                //문자 'a'를 기준으로 구한 ch의 상대적 위치에 + n을 한 후 문자로 재 변환
                ch = (char) ((ch - 'a' + n) % 26 + 'a');
            //문자 ch가 대문자라면    
            } else if (Character.isUpperCase(ch)) {
                //문자 'A'를 기준으로 구한 ch의 상대적 위치에 + n을 한 후 문자로 재 변환
                ch = (char) ((ch - 'A' + n) % 26 + 'A');
            }
            //StringBuilder에 추가
            result.append(ch);
        }
        //문자열로 변환 및 반환
        return result.toString();
    }
}

 

 

 

 

 

 

 

 

 

* Reference

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

 

프로그래머스

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

programmers.co.kr

 

반응형