본문 바로가기
코딩테스트 문제집/Programmers(Lv1)

[Programmers] Lv1: 시저 암호(12929)

by cogito30 2025. 6. 23.
반응형

문제

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

풀이

Java

(solution 1)


JavaScript

(solution 1)

더보기
function solution(s, n) {
    var answer = '';
    const capitalAlphabets = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    const smallAlphabets = "abcdefghijklmnopqrstuvwxyz";
    for (let i = 0; i < s.length; ++i) {
        if (s[i] >= 'A' && s[i] <= 'Z') {
            answer += capitalAlphabets[parseInt((capitalAlphabets.indexOf(s[i]) + n) % 26)];
        } else if (s[i] >= 'a' && s[i] <= 'z') {
            answer += smallAlphabets[parseInt((smallAlphabets.indexOf(s[i]) + n) % 26)];
            
        } else {
            answer += s[i];
        }
    }
    return answer;
}

1) 문자열을 순회하면서 문자 추출

2) 추출한 문자의 범위 비교

- 대문자, 소문자, 공백

3) Alphabets에서 해당 문자의 인덱스 확인후 n만큼 더하고 26(문자개수)로 나누기

4) Alphabets에서 3에서 나온 숫자위치의 문자를 answer에 더함

 

(학습포인트)

- 문자열에서 특정 문자 탐색

더보기
str.indexOf('문자', 시작인덱스=0); // 동일한 첫 문자 인덱스 반환

- 문자열 범위 비교

더보기
let ch = 'C'
if (ch >= 'A' && ch <= 'Z') {...} // ch가 A부터 Z사이 값일 경우 조건문 실행

 

반응형