✏️ 문제 설명
영어가 싫은 머쓱이는 영어로 표기되어있는 숫자를 수로 바꾸려고 합니다. 문자열 numbers가 매개변수로 주어질 때, numbers를 정수로 바꿔 return 하도록 solution 함수를 완성해 주세요.
제한사항
- numbers는 소문자로만 구성되어 있습니다.
- numbers는 "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine" 들이 공백 없이 조합되어 있습니다.
- 1 ≤ numbers의 길이 ≤ 50
- "zero"는 numbers의 맨 앞에 올 수 없습니다.
입출력 예
numbers | result |
"onetwothreefourfivesixseveneightnine" | 123456789 |
"onefourzerosixseven" | 14067 |
입출력 예 설명
입출력 예 #1
- "onetwothreefourfivesixseveneightnine"를 숫자로 바꾼 123456789를 return 합니다.
입출력 예 #1
- "onefourzerosixseven"를 숫자로 바꾼 14067를 return합니다.
✏️ 문제 풀이
- 내 풀이
function solution(numbers){
let stringToNumber={
zero: 0, one: 1, two: 2, three: 3, four: 4,
five: 5, six: 6, seven: 7, eight: 8, nine: 9
};
const num = numbers.replace(/zero|one|two|three|four|five|six|seven|eight|nine/g, (n) => {
return stringToNumber[n];
})
return Number(num);
}
dictionary에 조건을 넣어놓고 바꿔주고 싶었는데 다 붙어있는 string을 어떻게 나눠줘야 하나 막혀서 다른 풀이를 참고했다. 공백 등으로 딱 나뉘는 부분이 없어 regex안에 바꾸고 싶은 조합을 모두 넣어준다 => replace로 regex에 맞는 각각의 값을 바꿔준다. => replace() 메서드는 새로운 문자열을 반환하기 때문에 Number()로 바꿔주어 반환.
[참고] String.prototype.replace()
▶ String.prototype.replace()
replace() 메서드는 어떤 패턴에 일치하는 일부 또는 모든 부분이 교체된 새로운 문자열을 반환합니다. 그 패턴은 문자열이나 정규식(RegExp)이 될 수 있으며, 교체 문자열은 문자열이나 모든 매치에 대해서 호출된 함수일 수 있습니다.
pattern이 문자열인 경우, 첫 번째 문자열만 치환이 되며 원래 문자열은 변경되지 않습니다.
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace
// replace Syntax
replace(pattern, replacement)
- 다른 풀이
function solution(numbers) {
const number = ["zero","one","two","three", "four", "five", "six", "seven", "eight", "nine"]
for(let i = 0 ; i < number.length; i++){
numbers = numbers.split(number[i]).join(i)
}
return +numbers
}
numbers를 변수 number의 각 길이로 잘라주고 i로 바로 교체해주는 방법
<문자열을 숫자로 바꾸는 방법_ how to convert String into Number>
1. parseInt() 사용
▶ parseInt()
parseInt() 함수는 문자열 인자를 파싱(parsing)하여 특정 진수(수의 진법 체계에서 기준이 되는 값)의 정수(Int)를 반환한다.
(--- float값을 원하면 parseFloat() 사용)
syntax analysis 또는 syntactic analysis(구문 분석)은 자연어, 컴퓨터 언어 또는 데이터 구조로 된 일련의 기호를 공식 문법 규칙에 따라 분석하는 프로세스이다.
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/parseInt
// parseInt() Syntax
parseInt(string)
parseInt(string, radix)
- string : 파싱할 값
- radix : string의 진수를 나타내는 2부터 36까지의 정수(2~36진수까지 정의 가능), 선택값으로 지정하지 않을 경우 10진수로 parse 한다.
2. + : 단항 연산자(the unary operator) 사용
▶ +
+op;
여기서 op는 피연산자(operand)이다. 단항 연산자 +는 피연산자 앞에 위치하며 피연산자를 숫자로 변환해 반환한다.
3. Number() 사용
▶ Number()
Number가 함수로 호출되면 매개변수를 숫자(primitive)로 강제 변환한다. BigInt는 숫자로 변환됩니다. 값을 변환할 수 없으면 NaN를 반환한다.
// https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Number/Number
Number(value)
(Number 값은 37 or -9.25과 같은 부동 소수점 숫자(floating-point numbers)를 나타낸다.)
Number() 생성자(constructor)는 Number 개체를 만든다. ※거의 사용하지 않음. (위 예시와 다른 값 생성)
new Number(value)
참고 사이트
mdn
How to convert a string into integer in JavaScript?
'Algorithms > 코테 문풀' 카테고리의 다른 글
[프로그래머스] 자릿수 더하기 - JavaScript / reduce()에 대해 이해해보자! (0) | 2023.01.06 |
---|---|
[프로그래머스] 한 번만 등장한 문자 - JavaScript 풀이 / 배열에서 [빈 값, undefined, null] 제거하기 (0) | 2023.01.04 |
[프로그래머스] 369 문제 - JavaScript 풀이 (0) | 2023.01.04 |
[1316] 그룹 단어 체커 - Python 문풀 / sorted (0) | 2022.11.04 |
백준[1065번] 한수 문풀 - Python (0) | 2022.11.03 |