Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 항해99
- 카테고리필터
- 항해99추천
- 배열 중복 제거
- 실전프로젝트
- 동전 0
- 그리디
- 중복카테고리
- 로딩 후 실행
- NextJS v13
- 탐욕알고리즘
- 배열 메소드
- JavaScript
- 항해99솔직후기
- 자바스크립트
- 날씨 api
- 서버 컴포넌트
- react
- server component
- 항해99후기
- 백준
- 프로그래머스
- 부트캠프항해
- jQuery
- greedy
- 중복선택
- 클라이언트 컴포넌트
- 숫자를 별점으로
- 알고리즘
- db수정
Archives
- Today
- Total
공부 및 일상기록
[알고리즘] 숫자 문자열과 영단어 본문
문제
문제 설명
- 영문과 숫자가 섞인 문자열을 숫자로 변환하는 문제이다.
- "one4seveneight" --> 1478
- "23four5six7" --> 234567
제한 사항
- 숫자 0으로 시작하거나 zero로 시작하는 문자는 없다.
문제 풀이
나의 접근 방식
처음엔 아주 단순하게 replace만 쓰면 된다고 생각했다. 하지만 replace는 처음 발견된 1개만 바꿔주기 때문에 정규식을 사용해서 바꿔야 했다.
작성 코드
function solution(s) {
let a;
a = s
.replace(/zero/gi, 0)
.replace(/one/gi, 1)
.replace(/two/gi, 2)
.replace(/three/gi, 3)
.replace(/four/gi, 4)
.replace(/five/gi, 5)
.replace(/six/gi, 6)
.replace(/seven/gi, 7)
.replace(/eight/gi, 8)
.replace(/nine/gi, 9);
return Number(a);
}
위처럼 정규식을 사용해 포함되어있는 모든 숫자를 바꿔주었다. 다른사람의 풀이 방법을 보던 중 더욱 참신한 방법이 있어 가져와봤다.
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);
}
이 분의 풀이 방식은, 먼저 numbers 배열에 문자를 넣은 후, for문을 통하여 해당 원소를 split해서 자른 후 잘려진 자리에 i를 넣어 다시 join으로 합친 것이다.
어차피 문자열도 zero부터 이니, 해당 자리가 잘려나갔다면 그 인덱스번호와 똑같기 때문에 i를 넣으면 해당하는 숫자를 넣을 수 있는 것이다.
'개발 > 알고리즘, 자료구조' 카테고리의 다른 글
[알고리즘] 신고 결과 받기 (1) | 2023.04.20 |
---|---|
[알고리즘] 1차 비밀지도 (0) | 2023.04.20 |
[알고리즘] K번째 수 (0) | 2023.04.20 |
[알고리즘] 약수의 개수와 덧셈 (0) | 2023.04.20 |
[알고리즘] 폰켓몬 (0) | 2023.04.20 |