Q. 영어가 싫은 머쓱이는 영어로 표기되어있는 숫자를 수로 바꾸려고 합니다. 문자열 numbers가 매개변수로 주어질 때, numbers를 정수로 바꿔 return 하도록 solution 함수를 완성해 주세요.
function solution(numbers) { let Num = ["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"]; let Eng = ""; let answer = ""; numbers = numbers.split(""); for (let i = 0; i < numbers.length; i++){ Eng += numbers[i] if (Num.includes(Eng)){ answer += Num.indexOf(Eng); Eng = ""; } } return parseInt(answer); }
- 1단계. 파라미터는 숫자가 영어로 쓰여진 파라미터로 나오기에, split("")으로 하나씩 나뉘어진 배열로 만든다.
- 2단계. 영문으로 작성된 숫자로 만들어진 배열을 만들고, 인덱스를 이용하기로 판단한다.
- 3단계. 파라미터 배열에서 조합된 단어를 숫자배열과 비교하여 아라비아 숫자를 정답에 누적시켜야하기에 빈 문자열을 만든다.
- 4단계. 파라미터 배열을 순회하면서, 숫자열의 숫자와 일치하면 그 숫자열의 인덱스를 정답 배열에 누적하도록 조건문을 작성한다.
Q. 정수 n이 매개변수로 주어질 때, n의 약수를 오름차순으로 담은 배열을 return하도록 solution 함수를 완성해주세요.
function solution(n) { let answer = []; for (let i = 1; i <= n; i++){ if (n % i === 0){ answer.push(i) } } return answer; }
- 1단계. n이하의 자연수를 순회해야하기에, for문으로 1부터 n까지 순회하는 반복문을 작성한다.
- 2단계. n의 약수는 n에 나누었을때, 나머지가 0이라는 메커니즘을 이용한 조건문을 작성하여, 약수만 정답 배열에 추가하는 코드를 작성한다.
function solution(n) { return Array(n).fill(0) .map((v,i) => i+1) .filter((el) => n % (el) === 0); }
- 1단계. 인덱스가 n이고 0으로만 구성된 배열을 만든다.
- 2단계. map메서드로, 0이 인덱스에 1씩 더한 요소들로 바뀌도록 한다.
- 3단계. filter메서드로 각 요소를 n에 나누어 나머지가 0인 요소만 남도록 한다.