🏀  문제

 

 

불합격 😥 (내가 풀이한 코드)

function solution(s) {
  let answer = "";
  let box = s.split("");
  const number = [
    { name: 0, value: "zero" },
    { name: 1, value: "one" },
    { name: 2, value: "two" },
    { name: 3, value: "three" },
    { name: 4, value: "four" },
    { name: 5, value: "five" },
    { name: 6, value: "six" },
    { name: 7, value: "seven" },
    { name: 8, value: "eight" },
    { name: 9, value: "nine" },
  ];
  const length = box.length;
  let val = "";
  for (let i = 0; i < length; i++) {
    if (parseInt(box[i])) {
      answer += box[i];
    } else {
      val += box[i];
      for (let x = 0; x < number.length; x++) {
        if (number[x].value == val) {
          answer += number[x].name;
          val = "";
        }
      }
    }
  }
  answer = parseInt(answer);

  return answer;
}

내가 쓴 코드를 보면 맨처음 문자열을 받아 split함수를 사용하여 각 원소마다 잘라주었고 잘라진 원소 배열의 모든 길이를 for문으로 돌렸다

for문 안을 보면 받아온 문자를 parseInt형으로 바꾸어주엇을때 NaN이 아닌 숫자가 나온다면 현재 받아온  문자열의 원래값(?)이 숫자라는 것을 알수있고 그렇다면 숫자를 그대로 answer에 추가하엿다 .

이제 원소가 숫자가 아닌 경우 하나의 원소를 받을때마다 객체 number에 들어잇는 value값을 비교하여 값아 지면 answer의 해당하는 숫자를 넣어주고  임시보관소인 val를 초기화 해준다 마지막으로 문자열인 answer값을 정수형으로 변환 해준다 

 

---> 이 코드를 제출하였을때 테스트케이스 10번을 제외하고 모든 조건을 만족하였다  나는 아직 어떤 경우에서 잘못된건지 잘 모르겠다 😓

 

 

정답 코드 ⚽️

function solution(s) {
    var answer = 0;
    s = s.replace(/one/g,'1');
    s = s.replace(/two/g,'2');
    s = s.replace(/three/g,'3');
    s = s.replace(/four/g,'4');
    s = s.replace(/five/g,'5');
    s = s.replace(/six/g,'6');
    s = s.replace(/seven/g,'7');
    s = s.replace(/eight/g,'8');
    s = s.replace(/nine/g,'9');
    s = s.replace(/zero/g,'0');
    console.log(s);
    s = Number(s);
    return s;
}
  • 다른 분들은 자바스크립트 내장함수인 replace를 사용하여 해결한 것을 볼수 있다.
  • replace함수는 원래 바꿀 문자열 중 가장 앞에 있는 것 하나만! 바꿔준다
  • '/' 로 바꿀 문자열을 감싸준 뒤 문자열의 뒤에 'g'를 붙이면 한번에 해당하는 모든 문자열을 치환할 수 있다!

 

 

문제를 풀고 난 후..

  • 정규식과 기존의 알고잇엇던 내장함수를 이용할 방법을 잘 생각해야겠다... 
  • 직접 구현하려다 보니 시간도 꽤 뺏기고 어려웠던것 같다... 다음부터는 내장함수를 잘 이용해서 문제를 풀어야겠따

 

📌 문제  풀러가기 => https://programmers.co.kr/learn/courses/30/lessons/81301

 

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

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

programmers.co.kr

 

 

 

 

'알고리즘 > 프로그래머스' 카테고리의 다른 글

프린터.js  (0) 2021.08.11
실패물  (0) 2021.07.23
자연수를 뒤집어 배열로 만들기  (0) 2021.07.20

+ Recent posts