ํ์ด ๋ ์ง : 2025.04.28
๋ฌธ์ ์ ํ : 2021 ์นด์นด์ค ์ฑ์ฉ์ฐ๊ณํ ์ธํด์ญ
๋ฌธ์ ์ ๋ชฉ : ์ซ์ ๋ฌธ์์ด๊ณผ ์๋จ์ด
๋ฌธ์ ๋งํฌ : https://school.programmers.co.kr/learn/courses/30/lessons/81301
Intuition
- ๋ฌธ์์ด s ์์ ์๋จ์ด๋ก ํํ๋ ์ซ์๋ฅผ ์ซ์๋ก ๋ณํํ์ฌ ๋ฐํํ๋ ๋ฌธ์ ์ด๋ค.
- ์์ด์ ์ซ์๋ฅผ ๋งคํํ์ฌ s๋ฅผ ์ํํ๋ฉฐ ์ ๋ต์ ๋์ถํ๋ค.
Approach
- ์ ๋ต์ ์ ์ฅํ ๋ณ์ answer๋ฅผ ์ ์ธํ๊ณ , ๊ฐ์ฒด(numbers)๋ฅผ ์ฌ์ฉํ์ฌ ์๋จ์ด์ ์ซ์๋ฅผ ๋งคํํ๋ค.
- s๋ฅผ ์ํํ๋ for ๋ฃจํ ์์์
- ์ซ์๊ฐ ์๋๋ผ ๋ฌธ์๋ผ๋ฉด ๋ณ์ text์ ๋์ ํ๋ค.
- ์ซ์๋ผ๋ฉด answer์ ๊ทธ๋๋ก ๋์ ํ๋ค.
- ๋์ ๋ text๊ฐ numbers์ ์ง์ ๋ ๋จ์ด๋ผ๋ฉด ์ด์ ํด๋นํ๋ ์ซ์ ๋ฌธ์์ด์ answer์ ๋์ ํ๋ค.
- answer๋ฅผ number๋ก ๋ณํํ์ฌ ๋ฐํํ๋ค.
Complexity
- Time complexity :
O(n)
- ๋ฌธ์์ด s์ ๊ธธ์ด๋ฅผ n์ด๋ผ๊ณ ํ ๋ for ๋ฃจํ์์ s ์ ์ฒด๋ฅผ ์ํํ๋ค.
- for ๋ฃจํ ๋ด ๋ชจ๋ ์์ ์ O(1)์ด๋ฏ๋ก ์ ์ฒด์ ์ผ๋ก O(n)์ด๋ค.
- Splace complexity :
O(n)
- numbers์ ํฌ๊ธฐ๋ 10์ผ๋ก ๊ณ ์ ๋์ด ์์ผ๋ฏ๋ก O(1)์ด๋ค.
- answer์ ํฌ๊ธฐ๋ s์ ๊ธธ์ด์ ๋น๋กํ๋ฏ๋ก O(n)์ด๊ณ , ์ ์ฒด์ ์ผ๋ก O(n)์ด๋ค.
Code (JS)
- ๋ฌธ์ ์
- ๋งค ๋ฌธ์๋ง๋ค number๋ก ๋ณํํ๊ณ isNaN์ ํธ์ถํ๋ ๊ณผ์ ์ด ๋นํจ์จ์ ์ด๋ค. numbers๋ฅผ ๋ฐฐ์ด๋ก ๋ฐ๊ฟ์ ์ธ๋ฑ์ค์ ๋ฌธ์์ด์ ๋งคํํ ์๋ ์๋ค.
- ์ ๊ทํํ์(replace)์ ์ด์ฉํ๋ฉด ํจ์ฌ ๊ฐ๋จํ๊ฒ ํ ์๋ ์๋ค.
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 text = '';
for (let i = 0; i < s.length; i++) {
let isString = isNaN(Number(s[i]));
if (isString) {
text += s[i];
} else {
answer += s[i];
}
if (numbers[text]) {
answer += numbers[text];
text = '';
}
}
return Number(answer);
}
- ์ต์ ํํ ์ฝ๋ 1 : ์ ๊ทํํ์ ์ฌ์ฉ
function solution(s) {
const numbers = {
'zero': '0',
'one': '1',
'two': '2',
'three': '3',
'four': '4',
'five': '5',
'six': '6',
'seven': '7',
'eight': '8',
'nine': '9',
};
for (const [word, digit] of Object.entries(numbers)) {
s = s.replaceAll(word, digit);
}
return +s;
}
- ์ต์ ํํ ์ฝ๋ 2 : ๋ฐฐ์ด ์ฌ์ฉ
function solution(s) {
const numbers = ['zero','one','two','three','four','five','six','seven','eight','nine'];
numbers.forEach((word, idx) => {
s = s.split(word).join(idx);
});
return +s;
}
'์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ํ์ด > Programmers - Lv.1' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค Lv.1] ํธ๋ ํ์ดํธ ๋ํ (0) | 2025.05.01 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค Lv.1] ์ต์์ง์ฌ๊ฐํ (0) | 2025.04.25 |
[ํ๋ก๊ทธ๋๋จธ์ค Lv.1] ์์ฐ (0) | 2025.04.25 |
[ํ๋ก๊ทธ๋๋จธ์ค Lv.1] ๊ณต์ ์ฐ์ฑ (0) | 2025.04.24 |