프로그래머스 Level 1 - 둘만의 암호

크롱·2023년 12월 10일
0

코딩테스트

목록 보기
55/61

풀이 1

function solution(s, skip, index) {
    // 1) filter 함수를 사용하여 skip문자를 제거 배열을 반환 받는다.
  const alphabet = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", 
                      "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", 
                      "u", "v", "w", "x", "y", "z"].filter(c => !skip.includes(c));
    console.log(alphabet)
    // console.log(s.split("")) 	[ 'a', 'u', 'k', 'k', 's' ]

   return s.split("").map(c => alphabet[(alphabet.indexOf(c) + index) % alphabet.length]).join(""); 
    // % alphabet.length => z넘어서면 다시 a로 돌아가야하므로
}

풀이 2 - charCode

// 아스키코드 이용
function solution(s, skip, index) {
  let ans = "";
  let arr = s.split("");
  // a: 97 z: 122
  arr.map((item) => {
    let a = item.charCodeAt(); // 아스키코드로 나타냄
    for (let i = 0; i < index; i++) {
      a++; // 숫자 1더한 값으로 아래 사항들 수행
      // z 이상이면 a로 바꿈
      if (a > 122) {
        a = 97;
      }
      // 다시 문자로 변환해서 skip에 들어있는지 확인
      while (skip.includes(String.fromCodePoint(a))) {
        a++; // 있다면 한번 더 +1
        if (a > 122) {
          a = 97;
        }
      }
    }
    ans = ans + String.fromCodePoint(a);
  });
  return ans;
}
profile
👩‍💻안녕하세요🌞

0개의 댓글