알고리즘/programmers

[Javascript] 프로그래머스 : 숫자 문자열과 영단어

suwonieee 2023. 12. 28. 13:51

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

var dict = {
  "zero": 0,
  "one": 1,
  "two": 2,
  "three": 3,
  "four": 4,
  "five": 5,
  "six": 6,
  "seven": 7,
  "eight": 8,
  "nine": 9
};

function isNumber(char) {
  var numericPattern = /^[0-9]$/;
  return numericPattern.test(char);
}

function solution(s) {
  var answer = '';
  var idx = 0;

  while (idx < s.length) {
    if (isNumber(s[idx])) {
      answer += s[idx];
      idx += 1;
    } else {
      for (let ed = idx + 1; ed <= s.length; ed++) {
        var temp = s.slice(idx, ed);
        if (dict[temp] !== undefined) {
          answer += dict[temp];
          idx = ed;
          break;
        }
      }
    }
  }

  return parseInt(answer);
}

Python으로도 풀었던 문제. 당분간은 python으로 풀었던 문제 js로 풀어가며 감 잡고 싶다

 

Python 풀이는...

더보기

왕 간단함

dic = {
    'zero' : '0', 
    'one': '1', 
    'two': '2', 
    'three': '3', 
    'four': '4', 
    'five': '5', 
    'six': '6', 
    'seven': '7', 
    'eight': '8', 
    'nine': '9'
}

def solution(s):
    answer = ''
    idx = 0
    while idx < len(s):
        if s[idx].isdigit():
            answer += s[idx]
            idx += 1
        else:
            for end in range(idx + 1, len(s) + 1):
                tmp = s[idx:end]
                if tmp in dic:
                    answer += dic[tmp]
                    idx = end
                    break
    return int(answer)