숫자의 일부 자리수가 영단어로 바뀐 단어를 원래의 숫자를 return하도록 solution함수를 작성한다.
- "one4seveneight" -> 1478
- "23four5six7" -> 234567
- "2three45sixseven" -> 234567
function solution(s) {
var answer = s;
let numbers = ['zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine'];
for(let i = 0; i < numbers.length; i++){
let arr = answer.split(numbers[i]);
answer = arr.join(i);
}
return Number(answer);
}
answer.split(numbers[i]);
i = 0인 경우
- "one4seveneight" -> "one4seveneight"
i =1인 경우- "one4seveneight" -> " 4seveneight"
... i = 7인경우 ....- " 4seveneight' -> " 4 eight"
이런식으로 배열의 요소의 값을 통해 인수로 받은 값을 나눈다.
answer = arr.join(i);
join()
메서드를 이용해 현재 i의 값을 넣어준다.i =1인 경우
- "one4seveneight" -> "_4seveneight" -> "14seveneight"
... i = 7인경우 .....- "14seveneight" -> "14_eight" -> "147eight"
이 과정을 numbers[i]의 length값만큼 반복하게 되면 입력된 단어를 숫자로 변환이 된다.
String.prototype.split()- mdn문서
String 객체에 사용하며, 매개변수(separator,limit)
separator
: 원본 문자열을 끊어야 할 부분을 나타내는 문자열(string)limit
: 끊어진 문자열의 최대 개수를 나타내는 정수반환값 : 주어진 문자열을 separator마다 끊은 부분 문자열을 담은 Array(배열)
사용된 문자열에서 sperator가 등장하면 그 부분은 삭제되고 문자열이 배열로 반환된다.
문자열 -> 배열
var tempestString = 'Oh brave new world that has such people in it.';
var monthString = 'Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec';
//공백마다 문자열을 잘라 배열로 반환한다.
var arrayOffset = tempestString.split(' ');
console.log(arrayOffset);
//공백마다 문자열을 자르며 4개만 반환한다.
var arrayOffset2 = tempestString.split(' ', 4);
console.log(arrayOffset2);
[ 'Oh', 'brave','new', 'world', 'that', 'has','such', 'people','in', 'it.']
[ 'Oh', 'brave', 'new', 'world' ]
Array.prototype.join() - mdn문서
sperator
: 배열의 각 요소를 구분할 문자열을 지정한다.undefined
, null
이면 빈 문자열을 반환한다.var a = ['바람', '비', '불'];
var myVar1 = a.join();
var myVar2 = a.join(', ');
var myVar3 = a.join(' + ');
var myVar4 = a.join('');
console.log(myVar1);
console.log(myVar2);
console.log(myVar3);
console.log(myVar4);
바람,비,불 //매개변수가 생략하면 기본으로 ,(콤마)
바람, 비, 불
바람 + 비 + 불
바람비불
문제의 흐름은 이해하기 쉬웠으나, 처음이라 코드로 작성하는 것 조차 어려웠다.
이 문제를 풀려고 많은 시간동안 고민했지만, 결국에는 다른 사람들의 코드를 참고하게 되었다. 참고하면서 내가 문법적 개념이 부족하다는 것을 느껴졌다. 조금씩 문제를 풀어가면서 어떤 메서드나, 어떤 것들이 사용되는지에 대해 꼼꼼히 공부할 필요가 있다고 생각이 들었다.