티스토리 뷰
문제 설명
어떤 문장의 각 알파벳을 일정한 거리만큼 밀어서 다른 알파벳으로 바꾸는 암호화 방식을 시저 암호라고 합니다. 예를 들어 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 |
접근
알파벳 문자열을 만들고
s의 글자가 공백인지, 소문자인지, 대문자인지에 따른 조건 분기를 작성한다.
밀어낸 글자가 z를 넘어가게 되면 a부터 시작해야 하므로 인덱스가 순회하도록 작성한다.
구현
const solution = (s, n) => {
let answer = "";
const uppers = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
const lowers = uppers.toLowerCase();
answer = s.split("").map(v => {
if (v === " ") return " ";
if (uppers.includes(v)) {
const idx = uppers.indexOf(v);
return idx + n < uppers.length
? uppers[idx+n]
: uppers[(idx+n) - uppers.length]
}
if (lowers.includes(v)) {
const idx = lowers.indexOf(v);
return idx + n < lowers.length
? lowers[idx+n]
: lowers[(idx+n) - lowers.length]
}
}).join("");
return answer;
};
아스키 코드를 이용하면 좀더 깔끔한 풀이가 가능할 거 같다.
반응형
'프로그래머스 문제풀이 > Level 1' 카테고리의 다른 글
[프로그래머스] 실패율 (0) | 2020.04.23 |
---|---|
[프로그래머스] 비밀 지도 (0) | 2020.04.23 |
[프로그래머스] 콜라츠 추측 (0) | 2020.04.16 |
[프로그래머스] 하샤드 수 (0) | 2020.04.16 |
[프로그래머스] 이상한 문자 만들기 (0) | 2020.04.15 |
댓글