영어가 싫어요 (진짜 싫다ㅜ)

민태영·2023년 6월 8일
0

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

나의 풀이 => 못품 ㅜ

1) 먼저 one에서부터 zero까지의 객체를 만들었다.

2) for in으로 객체를 돌리면서 numbers의 문자열에 strNums의 key값이 있는지 includes로 확인한다

3) answer에 strNums의 key값을 차례로 저장을 한다.

function solution(numbers) {
    let sort = "";
    let answer = "";
    let strNums = {
        one : '1', 
        two : '2', 
        three : '3', 
        four : '4', 
        five : '5', 
        six : '6', 
        seven : '7', 
        eight : '8', 
        nine : '9',
        zero : '0'
    }
    
    for(const key in strNums) {
        if(numbers.includes(key)) {
            answer += strNums[key]
        }
    }
    console.log(answer)
}

문제점

  • 리턴값을 찾았지만 includes는 첫 원소부터 확인을 하기 때문에 리턴값의 순번이 맞지 않았다.
  • indexOf로 문자열 안의 순번을 찾아 정렬을 해도 그 순번의 맞는 value값을 찾기 힘들었다.

다른사람의 풀이

1) 먼저 strNums배열에 "zero"부터 "nine"까지 원소를 넣는다.

2) strNums를 forEach문으로 돌리면서 split(x)로 numbers문자열에 x값에 해당하는 자리만 지워준다.

3) 그 다음 join()함수로 그 자리를 idx로 채워준다.

function solution(numbers) {
    let answer = 0;
    let strNums = ["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"]
    
    strNums.forEach((x, idx) => {
        numbers = numbers.split(x).join(idx)
    })
    return Number(numbers)

}

배운점

  • split().join() 함수를 생각지도 못했고 split()와 join()의 기능을 잘 숙지하지 않고있었다.
  • 문제를 풀 때 좀더 심플하게 생각하면서 풀어야겠다.
profile
꿈을 꾸는 개발자

0개의 댓글