본문 바로가기
코테

[JS] 숫자 문자열과 영단어

by zenna 2024. 3. 18.
728x90
점수 : 1107 (+5)
테스트케이스 최대 소요시간 : 0.06ms

 

문제 요약 : 그냥 해당하는 문자열을 다 숫자로 바꿔주면 됨!

 

제출답안

let stringToNo = [['zero',0], ['one',1],['two',2],['three',3],['four',4],
                ['five',5],['six',6],['seven',7],['eight',8],['nine',9]] ;
function solution(s) { 
    stringToNo.forEach((ar)=> s = s.replaceAll(ar[0],ar[1]) ) ;
    return s*1;
}

 

문제해설

//아래 배열이 함수 안쪽으로 들어가면 시간이 쬐ㅣㅣㅣ끔 더 소요됩니다. 이유는..
let stringToNo = [['zero',0], ['one',1],['two',2],['three',3],['four',4],
                ['five',5],['six',6],['seven',7],['eight',8],['nine',9]] ;

function solution(s) { //1107 (+5) 0.06ms
	//위 변환용 배열을 순회돌면서 0번째 문자열에 해당하면 1번째 숫자로 바꿔줍니다.
    stringToNo.forEach((ar)=> s = s.replaceAll(ar[0],ar[1]) ) ;
    return s*1; //문자를 숫자로 변환해줍니다
}

마지막 문자열 -> 숫자 변환 방법은 여러가지가 있는데, 

다른 사람의 풀이로 올라온 대표적인 두가지는 Number(s) 와 parseInt(s) 였다. 

큰 차이는 없었지만 이 방법대로 하면 둘 다 최대 소요시간이 0.10ms를 넘어간다. 이유가 뭘까...?

728x90

댓글