한 걸음씩 기록하며
[프로그래머스 코딩테스트] 숫자 문자열과 영단어 본문
[숫자 문자열과 영단어]
문제 설명 :
네오와 프로도가 숫자놀이를 하고 있습니다. 네오가 프로도에게 숫자를 건넬 때 일부 자릿수를 영단어로 바꾼 카드를 건네주면 프로도는 원래 숫자를 찾는 게임입니다.
다음은 숫자의 일부 자릿수를 영단어로 바꾸는 예시입니다.
- 1478 → "one4seveneight"
- 234567 → "23four5six7"
- 10203 → "1zerotwozero3"
이렇게 숫자의 일부 자릿수가 영단어로 바뀌어졌거나, 혹은 바뀌지 않고 그대로인 문자열 s가 매개변수로 주어집니다. s가 의미하는 원래 숫자를 return 하도록 solution 함수를 완성해주세요.
참고로 각 숫자에 대응되는 영단어는 다음 표와 같습니다.
숫자영단어
0 zero 1 one 2 two 3 three 4 four 5 five 6 six 7 seven 8 eight 9 nine
⛏제한 조건
- 1 ≤ s의 길이 ≤ 50
- s가 "zero" 또는 "0"으로 시작하는 경우는 주어지지 않습니다.
- return 값이 1 이상 2,000,000,000 이하의 정수가 되는 올바른 입력만 s로 주어집니다.
📁 입출력 예시
👉🏻 답안
function solution(s) {
let numberStr = ['zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine'];// 1
let arr = [...s]; // spread operator
let alphabet = [];
if(!isNaN(s)) return number(s); // s가 전부 숫자라면 바로 리턴
for (let i = 0; i < arr.length; i++) { // 숫자가 아니라면 for문
if (isNaN(arr[i])) { // arr[i] 하나씩 불러서 문자라면
alphabet.push(arr[i]); // 알파벳 배열에 하나씩 넣는다
} else { // 숫자라면 그냥 돌린다
continue;
} // continue라면 for문은 계속 유지중
let str = alphabet.join('') // 알파벳 배열을 str이라는 문자열 생성
for (let j = 0; j < numberStr.length; j++) { // for문으로
if (str === numberStr[j]) { // str과 numberStr이 같다면
s = s.replace(str, j); // s의 str을 j로 치환
alphabet = []; // 알파벳 배열 초기화
}
}
}
return s;
}
📑 간단한 설명
진이 다 빠진 문제였다.. 엄청 시도했고 헤맸고 실패했다. 그래서 다른 블로그 글을 보고 힌트를 얻어, 내 답안을 전부 뜯어 고쳐서 풀었다.
위에 설명도 나름? 상세하게 적어놨다.
- .replace(str, str2) : 해당 문자열 안에 str을 str2로 치환하는 함수
아래에는 내가 참고한 블로그 주소를 남긴다. 굉장히 상세하게 설명해놓으셨으니 아래의 블로그 참고해도 좋겠다.
💪🏻 공부하면 좋을 답안
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);
}
- 보자마다 엄지척이 나오는 답안
- answer를 문자열로 split 하고, 다시 join(i)로 합쳤다.
- 즉 선택자가 one로 나뉘어졌으면, 다시 선택자를 1로 붙이는 것
- 신박하다..
위에서 언급한 블로그
'알고리즘 & 코딩테스트' 카테고리의 다른 글
[프로그래머스 코딩테스트] 2021 KAKAO BLIND RECRUITMENT 신규 아이디 추천 (0) | 2022.01.21 |
---|---|
[프로그래머스 코딩테스트] 시저 암호 (0) | 2022.01.20 |
[프로그래머스 코딩테스트] 소수 만들기 (0) | 2022.01.20 |
[프로그래머스 코딩테스트] 문자열 내림차순으로 배치하기 (0) | 2022.01.19 |
[프로그래머스 코딩테스트] 문자열 내 마음대로 정렬하기 (0) | 2022.01.19 |
Comments