min

프로그래머스 둘만의 암호 자바스크립트 본문

알고리즘

프로그래머스 둘만의 암호 자바스크립트

minprogramming 2023. 8. 26. 07:38

<문제>

https://school.programmers.co.kr/learn/courses/30/lessons/155652#

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

<나의 풀이>

//s의 길이만큼 반복하면서 다음 과정을 수행한다.
//index의 길이만큼 반복하면서 다음 과정을 수행한다.
//만약 skip에 해당 단어가 있다면 index를 올리지 않는다.
//만약 skip에 해당 단어가 없다면 index를 올린다.
//index만큼 뒤에 있는 알파벳을 answer에 더한다.
//answer를 리턴한다.

function solution(s, skip, index) {
    var answer = '';
    let alpha = "abcdefghijklmnopqrstuvwxyz";
    for(let i = 0; i < s.length; i++) {
        let j = 0;
        let k = alpha.indexOf(s[i])
        while (j < index) {
            if(!skip.includes(alpha[(k+1) % 26])) {
                j++;
            }
            k += 1;
        }
        k = k % 26
        answer += alpha[k]
    }
    
    return answer;
}


<다른 사람의 풀이>

function solution(s, skip, index) {
    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));
    return s.split("").map(c => alphabet[(alphabet.indexOf(c) + index) % alphabet.length]).join("");
}

 

<참고 자료>

filter

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/filter

 

Array.prototype.filter() - JavaScript | MDN

filter() 메서드는 주어진 함수의 테스트를 통과하는 모든 요소를 모아 새로운 배열로 반환합니다.

developer.mozilla.org