[프로그래머스] 암호 해독
본문 바로가기
코딩 테스트 연습/Programmers

[프로그래머스] 암호 해독

by 은돌1113 2023. 7. 19.

 

문제 설명

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

  • 암호화된 문자열 cipher를 주고받습니다.
  • 그 문자열에서 code의 배수 번째 글자만 진짜 암호입니다.

문자열 cipher와 정수 code가 매개변수로 주어질 때 해독된 암호 문자열을 return하도록 solution 함수를 완성해주세요.


제한사항

  • 1 ≤ cipher의 길이 ≤ 1,000
  • 1 ≤ code  cipher의 길이
  • cipher는 소문자와 공백으로만 구성되어 있습니다.
  • 공백도 하나의 문자로 취급합니다.

입출력 예

cipher code result
"dfjardstddetckdaccccdegk" 4 "attack"
"pfqallllabwaoclk” 2 "fallback"

입출력 예 설명

 

입출력 예 #1

  • "dfjardstddetckdaccccdegk" 의 4번째, 8번째, 12번째, 16번째, 20번째, 24번째 글자를 합친 "attack"을 return합니다.

입출력 예 #2

  • "pfqallllabwaoclk" 의 2번째, 4번째, 6번째, 8번째, 10번째, 12번째, 14번째, 16번째 글자를 합친 "fallback"을 return합니다.

문제풀이

function solution(cipher, code) {
  var answer = "";

  // cipher 문자열을 split("")으로 잘라서 문자 배열 생성
  const arr = cipher.split("");

  // 방법 1 : for문
  // 반복문 돌리기
  // 초기식 : 배수 첫번째 위치 / 조건식 : 암호 길이 / 증감식 : 하나씩 증가
  for (let i = code; i <= arr.length; i++) {
    // code의 배수 여부를 확인
    // 예) i가 4, 8, 12, 16일 경우 나머지가 0일 것이고, 14인 경우 나머지가 2일 것이기 때문에
    if (i % code === 0) {
      // index 값은 0부터 시작하기 때문에 arr[i - 1]의 값을 answer에 담아줌
      answer += arr[i - 1];
    }
  }

  // 방법 2 : filter()
  answer = arr
    .filter((item, i) => {
      // index 값은 0부터 시작하기 때문에 i + 0
      if ((i + 1) % code === 0) {
        return item;
      }
    })
    .join("");

  return answer;
}

console.log(solution("dfjardstddetckdaccccdegk", 4));
console.log(solution("pfqallllabwaoclk", 2));

 

 

프로그래머스

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

programmers.co.kr

 

댓글