728x90
반응형
24년 12월 20일
해결한 문제 갯수: 4
문제 설명
문제 분석
이 문제는 숫자와 영단어가 섞여있는 문자열에서 모든 영단어를 해당하는 숫자로 변환하는 것이 목표입니다.
- "one4seveneight" → 1478
- "23four5six7" → 234567
- "2three45sixseven" → 234567
접근 : Object.entries() / reduce()
function solution(s) {
const nums = {
zero: 0, one: 1, two: 2, three: 3, four: 4,
five: 5, six: 6, seven: 7, eight: 8, nine: 9
}
const answer = Object.entries(nums).reduce((answer, [k, v]) => {
answer = answer.replaceAll(k, v)
return answer
}, s)
return Number(answer)
}
- nums 객체 생성
- 영단어를 키로, 숫자를 값으로 하는 객체를 만들어 매핑을 정의합니다.
- Object.entries()와 reduce() 활용
- Object.entries(nums)로 객체를 [키, 값] 쌍의 배열로 변환합니다.
- reduce()를 사용해 각 영단어를 순회하며 해당하는 숫자로 치환합니다.
- replaceAll()로 문자열 내의 모든 영단어를 한 번에 치환합니다.
- 최종 변환
- Number()를 사용해 문자열을 숫자로 변환하여 반환합니다.
시간 복잡도
- Object.entries()는 O(n)의 시간 복잡도를 가집니다 (n은 객체의 속성 수).
- reduce()와 replaceAll()을 통한 순회도 O(n)의 시간 복잡도를 가집니다.
- 따라서 전체적인 시간 복잡도는 O(n)입니다.
728x90
반응형
'자료구조 및 알고리즘 > JavaScript Practice' 카테고리의 다른 글
[프로그래머스] 포켓몬 (0) | 2024.12.23 |
---|---|
[프로그래머스] [1차] 비밀지도 (1) | 2024.12.21 |
[프로그래머스] 시저암호 (0) | 2024.12.19 |
[프로그래머스] 부족한 금액 계산하기 (1) | 2024.12.18 |
[프로그래머스] 외계어 사전 (0) | 2024.12.17 |