Q. 암호화된 문자열 cipher를 주고받습니다.
그 문자열에서 code의 배수 번째 글자만 진짜 암호입니다.
문자열 cipher와 정수 code가 매개변수로 주어질 때 해독된 암호 문자열을 return하도록 solution 함수를 완성해주세요.
function solution(cipher, code) { let answer = ''; for (let i = code - 1; i < cipher.length; i += code){ answer += cipher[i] } return answer; }
- 1단계. 문제에서 code의 배수 번째 글자라고 했으나, 자바스크립트의 순서는 0부터 시작하기에 사실상 code -1 번째부터 시작한다는 것을 파악한다.
- 2단계. 첫번째 인덱스는 1을 차감했으나, 순서는 code만큼 커지기에 증감식에 code를 더한다.
function solution(cipher, code) { return [...cipher].filter((_,i) => (i + 1) % code === 0).join(""); }
- 1단계. code의 배수번째인 인덱스는 code의 배수보다 1이 작기 때문에, 인덱스의 입장에서 1을 더하여 code의 배수가 되는 방법으로 인덱스를 찾는다.
Q . 문자열 my_string이 매개변수로 주어질 때, 대문자는 소문자로 소문자는 대문자로 변환한 문자열을 return하도록 solution 함수를 완성해주세요.
function solution(my_string) { let answer = '' for (const i of [...my_string]) { if (i === i.toUpperCase()) { answer += i.toLowerCase() } else { answer += i.toUpperCase() } } return answer; }
- 1단계. 파라미터의 타입은 문자열이기에 이를 전개구문으로 전개한다.
- 2단계. 전개된 파라미터를 for of문으로 순환하며, 각 요소가 대문자인지, 아니면 소문자인지 if else문을 사용하여 구분하고, 대소문자를 바꿔준다.
function solution(my_string) { return [...my_string].map((el) => (el) === (el).toUpperCase() ? (el).toLowerCase() : (el).toUpperCase()).join(""); }
- 1단계. 파라미터의 타입은 문자열이기에 이를 전개구문으로 전개한다.
- 2단계. 배열의 요소에 변화를 주어야 하기 때문에 map메서드를 사용한다.
- 3단계. map으로 순환을 할 때, 삼항연산자를 이용하여, 요소의 대소문자를 판가름한 뒤, 대소문자를 바꿔준다.