풀이
김영준
function solution(s) { const numStr = ["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"]; for (let i = 0; i < 10; i++) { const str = numStr[i]; const pattern = new RegExp(str, "g"); // 정규 표현식을 동적으로 사용하려면 RegExp 객체를 생성해야 한다. s = s.replace(pattern, i); } return +s; }
이종현
function solution(s) { const str_num = ['zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine']; const num = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'] // 반복문을 돌며 str_num[i]가 s에 있다면 num[i]로 바꿔준다. /* for (let i = 0; i < str_num.length; i++) { * while (s.includes(str_num[i])) { * s = s.replace(str_num[i], num[i]); * } * } */ //while문 대신에 replaceAll을 사용해도 됩니다. for (let i = 0; i < str_num.length; i++) { if (s.includes(str_num[i])) { s = s.replaceAll(str_num[i], num[i]); } } return Number(s); }
박노철
function solution(s) { s=s.replaceAll("zero","0").replaceAll("one","1").replaceAll("two","2").replaceAll("three","3").replaceAll("four","4").replaceAll("five","5").replaceAll("six","6").replaceAll("seven","7").replaceAll("eight","8").replaceAll("nine","9") var answer = Number(s); return answer; } function solution(s) { //각 인덱스에 대응이 되는 숫자를 넣어 준다. 0=> "zero" let numbers = ["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"]; var answer = s; // split을 사용해서 각 영어를 기준으로 나누어준후 , 인덱스를 넣어서 다시 join으로 붙여준다. for(let i=0; i< numbers.length; i++) { let arr = answer.split(numbers[i]); answer = arr.join(i); } return Number(answer); }
이민희
function solution(s) { const dict = { 'zero': '0', 'one': '1', 'two': '2', 'three': '3', 'four': '4', 'five': '5', 'six': '6', 'seven': '7', 'eight': '8', 'nine': '9', } const words = Object.keys(dict); const numbers = Object.values(dict); const result = []; let charFlag = -1; // 새 영단어가 시작되는 인덱스 for (let i = 0; i < s.length; i++) { // 숫자인 경우 if (numbers.includes(s[i])) { result.push(s[i]); charFlag = -1; continue; } // 문자열인 경우 if (charFlag < 0) { charFlag = i; } const substr = s.substring(charFlag, i + 1); if (words.includes(substr)) { result.push(dict[substr]); charFlag = -1; } } return parseInt(result.join('')); }
박건우
function solution(s) { let answer = s; const wordList = ["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"]; wordList.forEach((word, i) => { // 커스텀 정규표현식 const regex = new RegExp(`${word}`, "g"); answer = answer.replace(regex, i); }) return +answer; } // 단순 replace 함수로만 바꾸려고 시도했으나 // "oneone" 과 같은 단어는 "one" 단어로 탐색이 되지 않습니다. // 따라서 정규표현식을 사용하였습니다. // 정규표현식에 변수를 넣어서 사용하려면 new 연산자로 RegExp 객체를 만들어야만 합니다. // 정규표현식 외의 방법도 궁금하네요!
박주연
function solution(s) { const num = ['zero','one','two','three','four','five','six','seven','eight','nine']; for(const i of num){ if(s.includes(i)){ //문자열에 num배열의 원소들이 있다면 그 원소의 index를 가져옴 const n = num.indexOf(i); s = s.replaceAll(i, String(n)); } } return Number(s); }