IT 개발자가 되기위한 여정

컴퓨터 공부를 시작함에 앞서 계획 및 개발에 대한 내용을 풀어나갈 생각입니다.

IT 학습/Algorithums

프로그래머스 - 숫자 문자열과 영단어 [split , join]

제로시엘 2022. 4. 19. 21:23

https://programmers.co.kr/learn/courses/30/lessons/81301

 

코딩테스트 연습 - 숫자 문자열과 영단어

네오와 프로도가 숫자놀이를 하고 있습니다. 네오가 프로도에게 숫자를 건넬 때 일부 자릿수를 영단어로 바꾼 카드를 건네주면 프로도는 원래 숫자를 찾는 게임입니다. 다음은 숫자의 일부 자

programmers.co.kr

변경점

 금일부터 알고리즘 문제풀이 (공부)중 알아두면 좋은 방식 , 참고할만한 사용법을 중심으로 차후에 다시 활용할 수 있는 글을 작성하고자 한다

 

코드

function solution(s) {
    let numbers = ["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"];
    var answer = s;

    for(let i=0; i< numbers.length; i++) {
        let arr = answer.split(numbers[i]);
        answer = arr.join(i);
    }
    return Number(answer);
}

console.log(solution("one4seveneight")); // 1478
console.log(solution("23four5six7"));  // 234567
console.log(solution("2three45sixseven"));  // 234567
console.log(solution("123")); // 123

사용한 메소드 & 해설

zero ( numbers[0] ) ~ nine ( numbers[9] ) 까지의 배열을 셋팅

zero ~ nine 의 string을 입력받은 값에서 탐색

해당 단어가 발견되면 단어를 기준으로 split을 사용하여 좌 우로 나눈다

이후 join으로 좌 우의 단어를 합치면서 사이에 해당 숫자를 집어넣는다.

 

  • split
string.split(separator, limit)

문자열을 separator를 기준으로 잘라서 배열로 만들어서 리턴합니다.

이번 문제에서는 numbers에 있는 단어를 기준으로 사용합니다.

"one4seveneight".split("seven"); // ["one4","eight"]

 

  • join
arr.join([separator])

배열을 문자열로 합성해줍니다. 합성해 줄때 separator를 구분할 문자로 넣을 수 있습니다.

["one4","neight"].join(7) // "one47eight"

 

 

 

즉 위의 두가지를 통해 seven -> 7로 바꾸는게 가능하며 이것을 0~9까지 실행후

최종값을 Number로 숫자열로 변환 리턴한다.