본문 바로가기
코딩테스트

프로그래머스 자바스크립트 암호 해독

by min' 2023. 3. 23.
728x90
반응형

 

 

문제 설명

 

군 전략가 머쓱이는 전쟁 중 적군이 다음과 같은 암호 체계를 사용한다는 것을 알아냈습니다.

- 암호화된 문자열 cipher를 주고받습니다.
- 그 문자열에서 code의 배수 번째 글자만 진짜 암호입니다.
문자열 cipher와 정수 code가 매개변수로 주어질 때 해독된 암호 문자열을 return하도록 solution 함수를 완성해주세요.

 

내 첫 번째 방법은 별 거 없었다.

고차함수를 사용할까 하다가 머리가 잘 안돌아가서 그냥 문자열로 for문을 돌리기로 하였다.

 

여기서 중요한 것은, code가 자릿수를 뜻함으로 index + 1이라는 것.

그걸 기반으로 for문을 돌렸다.

 

function solution(cipher, code) {
    let answer = "";
    
    for (let i = code-1; i < cipher.length; i+=code){
       answer += cipher[i];
    }
    return answer;
}

 

이걸 풀고 나니 정신이 조금씩 멀쩡해지기 시작해서 고차함수를 이용해보았다.

여기서 하나 꿀팁, filter는 콜백함수의 인자로 value, index, array를 받을 수 있다.

나는 그 점을 이용해서 코드를 짜보았다.

 

value는 사용 안하고 index만 사용할시 value 자리에 _를 넣어주면 된다.
code 자릿수는 index + 1이므로 (index + 1) % code === 0인 조건을 filter를 통해서 찾아내면 된다.
찾게 되면 join()을 이용해 배열을 문자열로 합쳐준 후 return!

 

function solution(cipher, code) {
  return cipher.split('').filter((_, index) => (index + 1) % code === 0).join('');
}

 

 

728x90
반응형

댓글