오늘의 코딩테스트 한줄 - 암호 해독

Edwin·2023년 2월 5일
0
post-thumbnail

암호 해독


프로그래머스, 암호 해독

문제설명

군 전략가 머쓱이는 전쟁 중 적군이 다음과 같은 암호 체계를 사용한다는 것을 알아냈습니다. 문자열 cipher와 정수 code가 매개변수로 주어질 때 해독된 암호 문자열을 return하도록 solution 함수를 완성해주세요.

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

제한사항

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

입출력의 예

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

01 나의 풀이 살펴보기

function solution(cipher, code) {
  let arr = [];
  for(let i=1;i<cipher.split("").length+1;i++) {
    if(i%code == 0) {
      arr.push(cipher[i-1])
    }
  }
  return arr.join("")
  
}

먼저, let arr = []; 먼저 빈 배열을 하나 만들었다.
둘째, return arr.join("") 그리고 반복조건문을 통해서 들어올 배열의 값을, join()하여 결과로 반환하도록 하였다.
셋째, for(let i=1;i<cipher.split("").length;i++) 매개변수로 들어온 cipher을 공백단위로 자른 뒤에, 해당 길이의 수 만큼 반복문을 실행하도록 하였다. 이때 배수를 찾아야 한다는 점에서 배열의 0번지는 무조건 포함되지 않아야 하기에 i가 1부터 시작되도록 설정했다.
넷째, 조건문은 들어온 i의 값을 매개변수 code 로 나눴을 때 0이 되면, 즉 code 의 배수에 해당되는 배열의 위치가 빈배열 arr에 담겨지도록 설정했다. 그러나 컴퓨터 숫자에 맞추기 위해서 -1을 달아줬다.
다섯째, 그런데, 마지막 배열이 담겨지지 않아서 의아했다. 이유는 정확하게 아직 인지하지 못했지만, 반복문이 실행될 때, cipher.split("").length+1 이 되게 했다. 결과는 테스트 11번 모두 성공이었다. 구글링을 하지 않고 스스로 풀어보니 으쓱하기는 한데, 다른 사람의 풀이도 살펴보자.

02 다른 풀이 살펴보기

음.. 쌈박한 풀이는 없어 보이고, 귀찮으니 패스하자.

profile
신학전공자의 개발자 도전기!!

0개의 댓글