숫자 문자열과 영단어
풀이 코드
function solution(s) {
let answer = '';
const numbers = {
'zero': 0, 'one': 1, 'two': 2,
'three': 3, 'four': 4, 'five': 5,
'six': 6, 'seven': 7, 'eight': 8,
'nine': 9,
};
let currentWord = '';
for (let i = 0; i < s.length; i++) {
const char = s[i];
if (char >= '0' && char <= '9') {
answer += char;
} else {
currentWord += char;
if (currentWord in numbers) {
answer += numbers[currentWord];
currentWord = '';
}
}
}
return Number(answer);
}
설명
function solution(s) {
문자열을 여러 번 슬라이스하고 각 영단어를 반복해서 검색하는 방식의 함수
solution 함수를 만들고 numbers를 매개변수로 받는다.
let answer = '';
결과를 저장할 빈 문자열 변수를 만듬
const numbers = {
'zero': 0, 'one': 1, 'two': 2,
'three': 3, 'four': 4, 'five': 5,
'six': 6, 'seven': 7, 'eight': 8,
'nine': 9,
};
Map 대신 객체를 사용
숫자와 영단어를 매핑
매핑 : 두 개의 집합 관계를 정의
let currentWord = '';
현재 영단어를 저장하는 변수 선언
for (let i = 0; i < s.length; i++) {
const char = s[i];
s길이 전 까지 만큼 순환하는 for문
현재 인덱스 i에 해당하는 문자를 char라는 변수에 저장
if (char >= '0' && char <= '9') {
answer += char;
현재 0에서 9사이의 문자가 숫자일때 answer에 그 숫자를 추가한다.
} else {
currentWord += char;
숫자가 아닌경우 현재 문자를 currentWord에 추가
슬라이스 대신 영단어를 구성
if (currentWord in numbers) {
answer += numbers[currentWord];
currentWord = '';
현재 영단어가 numbers에 존재하는지 확인하는 if 문 (숫자 인지 확인)
currentWord가 numbers에 있으면 숫자를 answer에 추가
current 초기화하고 다음 단어 처리할 준비
}
}
}
if, else, for문 루프 끝
return Number(answer);
}
결과를 숫자로 변환하여 반환
'TIL' 카테고리의 다른 글
TIL 20241107 (두 개 뽑아서 더하기 - 알고리즘) (0) | 2024.11.07 |
---|---|
TIL 20241029(알고리즘 - 이상한 문자 만들기) (0) | 2024.10.29 |
TIL 20241024 (모의면접 준비) (0) | 2024.10.24 |
TIL 20241022 (Unity) (0) | 2024.10.22 |
TIL 20241019 (삼총사 - 알고리즘) (0) | 2024.10.19 |