숫자 문자열과 영단어 자바스크립트 23.12.23
알고리즘 문제 풀다가 너무 어이없게 풀어서 기록

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

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

이렇게 숫자의 일부 자릿수가 영단어로 바뀌어졌거나, 혹은 바뀌지 않고 그대로인 문자열 s가 매개변수로 주어집니다. s가 의미하는 원래 숫자를 return 하도록 solution 함수를 완성해주세요.
참고로 각 숫자에 대응되는 영단어는 다음 표와 같습니다.
숫자
|
영단어
|
0
|
zero
|
1
|
one
|
2
|
two
|
3
|
three
|
4
|
four
|
5
|
five
|
6
|
six
|
7
|
seven
|
8
|
eight
|
9
|
nine
|
내가 푼 방법
function solution(s) {
//해당 숫자표에 맞다면 전부 숫자로 바꿔야함
let answer = s.replace(/zero/g, 0);
let answer1 = answer.replace(/one/g, 1);
let answer2 = answer1.replace(/two/g, 2);
let answer3 = answer2.replace(/three/g, 3);
let answer4 = answer3.replace(/four/g, 4);
let answer5 = answer4.replace(/five/g, 5);
let answer6 = answer5.replace(/six/g, 6);
let answer7 = answer6.replace(/seven/g, 7);
let answer8 = answer7.replace(/eight/g, 8);
let answer9 = answer8.replace(/nine/g, 9);
return parseInt(answer9)
}
저기서 g 는 해당하는 모든 문자열을 반환하라는 표시
일단은 대응되는 영단어를 숫자로 치환하기위해 replace를 사용히였고
JavaScript - 문자열 바꾸기(replace, 정규식 치환)
String 타입은 replace()함수를 제공하며 이것을 이용하여 문자열의 특정 문자열을 다른 문자열로 변환할 수 있습니다. replace()는 먼저 검색되는 1개의 문자열만 치환하는데요, 정규 표현식을 이용하
codechacha.com
(여기 사이트를 참고해서 풀어봤는데 정규식 치환은 내용이 방대해서 따로 정리해봐야겠다)
그리고 마지막은 숫자로 반환해줘야하기에 parseint 사용하였다
다른 사람 풀이
function solution(s) {
let numbers = ["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"];
var answer = s;
for(let i=0; i< numbers.length; i++) {
let arr = answer.split(numbers[i]);
answer = arr.join(i);
}
return Number(answer);
}
for문을 이용한 깔끔한 풀이
단어로 split했던 array를 join으로 다시 묶으면서 그 사이에 i(해당 숫자)를 넣어주는거에요 라고 댓글에 설명이있는데
처음에는 무슨소리인지 모르다가
다시 해석해보니 numbes 에서 해당 단어가 있다면 스플릿으로 빼버리고 해당자리에 인덱스 값을 넣어줘버리는 알고리즘
그리고 마지막 숫자로 변환까지 깔끔한 풀이였네요 알고리즘은 풀때마다 신기한 방법들이 많은거같습니다