프로그래머스 시저 암호 JAVA (문자열, 구현, 아스키코드)

2026. 5. 25. 19:27·코테(Solved.ac + Programmers)
728x90

🔗 문제 링크

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


📌 문제 개요

문자열의 각 알파벳을 일정 거리만큼 이동시키는 시저 암호 문제

  • "AB" → 1칸 이동 → "BC"
  • "z" → 1칸 이동 → "a"

처럼 알파벳 범위를 넘어가면 다시 처음으로 순환해야 한다.

또한 공백은 그대로 유지해야 한다.


📌 접근 방법

문자열을 한 글자씩 순회하면서 다음과 같이 처리했다.

  1. 공백이면 그대로 추가
  2. 대문자면 'A' ~ 'Z' 범위 기준 이동
  3. 소문자면 'a' ~ 'z' 범위 기준 이동
  4. % 26 연산으로 알파벳 순환 처리

문자열 연결은 StringBuilder를 사용


📌 핵심 아이디어

시저 암호 핵심 공식은 아래와 같다.

 

대문자 이동

(ch - 'A' + n) % 26 + 'A'

소문자 이동

(ch - 'a' + n) % 26 + 'a'

 

('Z' - 'A' + 1) % 26 + 'A'
(25 + 1) % 26
= 0

즉 다시 'A'로 순환된다.


📌 전체 코드

class Solution {
    public String solution(String s, int n) {

        StringBuilder sb = new StringBuilder();

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

            char ch = s.charAt(i);

            // 공백 처리
            if(ch == ' ') {
                sb.append(' ');
            }

            // 대문자 처리
            else if(ch >= 'A' && ch <= 'Z') {
                ch = (char)((ch - 'A' + n) % 26 + 'A');
                sb.append(ch);
            }

            // 소문자 처리
            else if(ch >= 'a' && ch <= 'z') {
                ch = (char)((ch - 'a' + n) % 26 + 'a');
                sb.append(ch);
            }
        }

        return sb.toString();
    }
}

📌 정리

이 문제는 단순 문자열 구현 문제처럼 보이지만,

  • 아스키코드
  • 문자 연산
  • 알파벳 순환 처리

개념을 이해하고 있는지 확인하는 문제

특히 % 26을 이용한 순환 처리 방식은 이후 문자열 문제에서도 자주 사용되는 패턴이라 익혀두면 좋다.

728x90

'코테(Solved.ac + Programmers)' 카테고리의 다른 글

프로그래머스 푸드 파이트 대회 JAVA 풀이  (0) 2026.05.27
프로그래머스 두 개 뽑아서 더하기 (JAVA)  (0) 2026.05.26
프로그래머스 가장 가까운 같은 글자 JAVA 풀이 (해시맵, 문자열)  (0) 2026.05.24
프로그래머스 3진법 뒤집기 (JAVA)  (0) 2026.05.22
프로그래머스 최소직사각형 (JAVA)  (0) 2026.05.22
'코테(Solved.ac + Programmers)' 카테고리의 다른 글
  • 프로그래머스 푸드 파이트 대회 JAVA 풀이
  • 프로그래머스 두 개 뽑아서 더하기 (JAVA)
  • 프로그래머스 가장 가까운 같은 글자 JAVA 풀이 (해시맵, 문자열)
  • 프로그래머스 3진법 뒤집기 (JAVA)
PUSH → MERGE → DEPLOY
PUSH → MERGE → DEPLOY
데이터 흐름과 운영 자동화를 설계하는 백엔드 개발자
  • PUSH → MERGE → DEPLOY
    Coding Dongin
    PUSH → MERGE → DEPLOY
  • 전체
    오늘
    어제
    • MEUN
      • 코테(Solved.ac + Programmers)
      • BootCamp(JAVA)
      • JAVA
      • SpringBoot
      • JavaScript
      • JSP
      • DB(SQL)
      • React
      • HTML_CSS
      • jQuery
      • SCSS
      • GSAP
      • 설치 + 꿀팁
      • 정보처리기사 오답노트
      • 정보처리기사 기출문제
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • GIT
  • 공지사항

  • 인기 글

  • 태그

    문자열
    알고리즘
    Level2
    시뮬레이션
    코딩테스트
    기출문제
    dp
    java
    프로그래머스
    브루트포스
    백엔드개발자
    완전탐색
    수학
    정보처리기사
    정보처리기사 실기 기출문제
    피보나치
    배열
    정처기오답노트
    level0
    springboot
    자바
    실기
    정처기
    정렬
    solved.ac
    구현
    백준
    정처기실기
    자료구조
    level1
  • 최근 댓글

  • 최근 글

  • 250x250
  • hELLO· Designed By정상우.v4.10.4
PUSH → MERGE → DEPLOY
프로그래머스 시저 암호 JAVA (문자열, 구현, 아스키코드)
상단으로

티스토리툴바