프로그래머스 4-8 TIL

Seunggyu Jung·2023년 4월 8일
0
post-thumbnail

1. Day 15 3/4 : 영어가 싫어요

Q. 영어가 싫은 머쓱이는 영어로 표기되어있는 숫자를 수로 바꾸려고 합니다. 문자열 numbers가 매개변수로 주어질 때, numbers를 정수로 바꿔 return 하도록 solution 함수를 완성해 주세요.

1-1. 내 풀이 및 해설

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단계. 파라미터 배열을 순회하면서, 숫자열의 숫자와 일치하면 그 숫자열의 인덱스를 정답 배열에 누적하도록 조건문을 작성한다.

2. Day 15 4/4 : 약수 구하기

Q. 정수 n이 매개변수로 주어질 때, n의 약수를 오름차순으로 담은 배열을 return하도록 solution 함수를 완성해주세요.

2-1. 내 풀이 및 해설

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이라는 메커니즘을 이용한 조건문을 작성하여, 약수만 정답 배열에 추가하는 코드를 작성한다.

2-2. 다른 내 풀이 및 해설

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인 요소만 남도록 한다.

3. 마무리

  • 다른 풀이들을 살펴보니, 확실히 정규식을 알면 보다 효율적으로 풀 수 있기 때문에 부진런히 공부해야겠다.
profile
감동을 주고픈 개발자(준비생)

0개의 댓글