군 전략가 머쓱이는 전쟁 중 적군이 다음과 같은 암호 체계를 사용한다는 것을 알아냈습니다.
- 암호화된 문자열 cipher를 주고받습니다.
- 그 문자열에서 code의 배수 번째 글자만 진짜 암호입니다.
문자열 cipher와 정수 code가 매개변수로 주어질 때 해독된 암호 문자열을 return하도록 solution 함수를 완성해주세요.
제한사항
- 1 ≤ cipher의 길이 ≤ 1,000
- 1 ≤ code ≤ cipher의 길이
- cipher는 소문자와 공백으로만 구성되어 있습니다.
- 공백도 하나의 문자로 취급합니다.
입출력 예ciphercoderesult
"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합니다.
<제출답안>
배열.unshift( )-> 배열 맨 앞부분에 원하는 값 넣기 // 배열.shift(); 첫 값 빼기
배열.push( ) -> 배열 맨 뒷부분에 원하는 값 넣기 // 배열.pop(); 마지막 값 빼기(배열길이 감소)
function solution(cipher, code) {
let result = [];
cipher.split("");
for(let i= 0; i<cipher.length; i++){
if(i+1 % code === 0){
result.unshift(cipher[i+1])
}
}
return result
}
"dfjardstddetckdaccccdegk", 4 | |
기댓값 〉 | "attack" |
실행 결과 〉 | 실행한 결괏값 []이 기댓값 "attack"과 다릅니다. |
테스트 2 | |
입력값 〉 | "pfqallllabwaoclk", 2 |
기댓값 〉 | "fallback" |
실행 결과 〉 | 실행한 결괏값 []이 기댓값 "fallback"과 다릅니다. |
result에 cipher에서 내가 원하는 차례의 요소가 안들어간다. 이유를 모르겠다.
ㅡㅡㅡㅡㅡㅡㅡ>안되는 이유
1.
if(i+1 % code === 0) 이 조건문이 잘 못 되서였다. %기호가 우선순위가 더 놓으니 그랬다.
(i+1)로 괄호를 쳐줘야 된다. 연산자 우선순위를 잘 보자.
2.
result에 cipher 요소들은 잘어 간다. 그러나 unshift를 쓰면 반대로 나온다. attack이 아니라 kcatta로 나옴.
function solution(cipher, code) {
let result = [];
for(let i= 0; i<cipher.length; i++){
if((i+1) % code === 0){
result.push(cipher[i])
}
}
return result.join("")
}
수정 제출결과.
<보충 내용>
if(i+1 % code === 0) 이 조건문이 잘 못 되서였다. %기호가 우선순위가 더 놓으니 그랬다.
(i+1)로 괄호를 쳐줘야 된다. 연산자 우선순위를 잘 보자.
2.
result에 cipher 요소들은 잘어 간다. 그러나 unshift를 쓰면 반대로 나온다. attack이 아니라 kcatta로 나옴.
3.
const solution = (cipher, code) => [...cipher].filter((a,i) => (i+1)%code === 0).join("")
filter에 이런식으로 순서에 맞게끔 해줄 수 있음.
filter(a, index) 이런식으로 특정 순서 지명가능.
'🗃️javascript > 프로그래머스' 카테고리의 다른 글
대문자와 소문자(Lv.0)[고차 함수에 index 적용해서 풀기] (0) | 2023.01.03 |
---|---|
자릿수 더하기(Lv.1)[reduce((누적값, 현재값) => 누적 적용식, 초기값)] (0) | 2023.01.03 |
세균 증식(LV.0)(제곱하기 : Math.pow(밑,지수)) (0) | 2023.01.03 |
직각삼각형 출력하기(Lv.0)(.repeat())(아직 보류) (0) | 2023.01.03 |
모음 제거(Lv.0)[includes() 활용해서 교집합 차집합 구하기 및 정규식] (0) | 2023.01.02 |