220329 시저 암호

프로그래머스 12926번 문제


내 풀이

function solution(s, n) {
  let answer = "";
  let arr = s
    .split("")
    .map((cur, idx) => (cur == " " ? cur : s.charCodeAt(idx) + n));
  for (let i = 0; i < arr.length; i++) {
    if (arr[i] === " ") {
      arr[i] = " ";
    } else {
      if (s[i] === s[i].toUpperCase()) {
        91 <= arr[i]
          ? (arr[i] = String.fromCharCode(arr[i] - 26))
          : (arr[i] = String.fromCharCode(arr[i]));
      } else if (s[i] === s[i].toLowerCase()) {
        123 <= arr[i]
          ? (arr[i] = String.fromCharCode(arr[i] - 26))
          : (arr[i] = String.fromCharCode(arr[i]));
      }
    }
  }
  return arr.join("");
}
  1. 문자열 s를 split( )를 이용하여 arr이라는 배열로 바꾸고,
    그 배열을 map함수를 통해서 문자인 경우 아스키 코드로 바꾼다
  2. if문으로 공백일 때, 대문자일 때, 소문자 일 때를 조건으로 그 안에 삼항 연산자로 arr의 요소를 아스키 코드에서 문자열로 바꿔준다
  3. 반환받은 배열을 join 함수로 하나로 연결한다

좋은 웹페이지 즐겨찾기