문제설명
군 전략가 머쓱이는 전쟁 중 적군이 다음과 같은 암호 체계를 사용한다는 것을 알아냈습니다. 문자열 cipher와 정수 code가 매개변수로 주어질 때 해독된 암호 문자열을 return하도록 solution 함수를 완성해주세요.
- 암호화된 문자열 cipher를 주고받습니다.
- 그 문자열에서 code의 배수 번째 글자만 진짜 암호입니다.
제한사항
입출력의 예
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번 모두 성공이었다. 구글링을 하지 않고 스스로 풀어보니 으쓱하기는 한데, 다른 사람의 풀이도 살펴보자.
음.. 쌈박한 풀이는 없어 보이고, 귀찮으니 패스하자.