문제 설명
어떤 문장의 각 알파벳을 일정한 거리만큼 밀어서 다른 알파벳으로 바꾸는 암호화 방식을 시저 암호라고 합니다. 예를 들어 "AB"는 1만큼 밀면 "BC"가 되고, 3만큼 밀면 "DE"가 됩니다. "z"는 1만큼 밀면 "a"가 됩니다. 문자열 s와 거리 n을 입력받아 s를 n만큼 민 암호문을 만드는 함수, solution을 완성해 보세요.
제한사항
- 공백은 아무리 밀어도 공백입니다.
- s는 알파벳 소문자, 대문자, 공백으로만 이루어져 있습니다.
- s의 길이는 8000이하입니다.
- n은 1 이상, 25이하인 자연수입니다.
입출력 예
s | n | result |
"AB" | 1 | "BC" |
"z" | 1 | "a" |
"a B z" | 4 | "e F d" |
문제 풀기 설명
solution.js
function solution(s, n) {
const upper = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
const lower = "abcdefghijklmnopqrstuvwxyz";
let answer = "";
for (var i = 0; i < s.length; i++) {
const text = s[i];
if (text == " ") {
answer += " ";
continue;
}
const textArr = upper.includes(text) ? upper : lower;
let index = textArr.indexOf(text) + n;
if (index >= textArr.length) index -= textArr.length;
answer += textArr[index];
}
return answer;
}
- 대문자는 대문자로, 소문자는 소문자로 똑같아야 하기 때문에 upper와 lower 변수를 만든다.
- 반복문을 통해 매개변수 s의 길이만큼 돌면서 해당 인덱스의 요소가 공백일 경우 answer에 공백을 추가한다.
- 공백이 아닐 경우 includes 함수를 통해 upper나 lower인지 확인하여 textArr 변수에 담는다.
- 매개변수 n만큼 뒤로 밀어야 되기 때문에 index 변수에 textArr.indexOf(text)+n을 통해 해당 인덱스를 담는다.
- 예를 들어 z같은 경우 마지막 인덱스이기 때문에 +n을 통해 뒤로 밀었을 경우 textArr의 길이보다 더 크다.
그래서 if문을 통해 textArr.length보다 index가 큰 경우의 예외처리를 해준다. - answer에 textArr[index]를 더한다.
- answer 변수를 return 한다.
'알고리즘' 카테고리의 다른 글
프로그래머스 - [1차] 비밀지도 (1) | 2023.06.06 |
---|---|
프로그래머스 - 크기가 작은 부분문자열 (0) | 2023.06.04 |
프로그래머스 - 삼총사 (0) | 2023.06.01 |
프로그래머스 - 예산 (0) | 2023.05.31 |
프로그래머스 - 최대공약수와 최소공배수 (1) | 2023.05.30 |