forked from DaleStudy/leetcode-study
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathJANGSEYEONG.js
More file actions
32 lines (27 loc) ยท 1002 Bytes
/
JANGSEYEONG.js
File metadata and controls
32 lines (27 loc) ยท 1002 Bytes
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
29
30
31
32
/**
* ์๊ฐ ๋ณต์ก๋: O(n) - n์ ๋ชจ๋ ๋ฌธ์์ด์ ์ด ๊ธธ์ด. ๊ฐ ๋ฌธ์๋ฅผ ํ ๋ฒ์ฉ๋ง ์ฒ๋ฆฌํจ
* ๊ณต๊ฐ ๋ณต์ก๋: O(n) - ์ธ์ฝ๋ฉ/๋์ฝ๋ฉ ๊ฒฐ๊ณผ๋ฅผ ์ ์ฅํ๋ ๋ฐ ์๋ณธ ๋ฐ์ดํฐ ํฌ๊ธฐ๋งํผ ๊ณต๊ฐ ํ์
*/
var encode = function (strs) {
let text = "";
for (let str of strs) {
// ๊ฐ ๋ฌธ์์ด ์์ ๊ธธ์ด์ ๊ตฌ๋ถ์(:)๋ฅผ ๋ถ์ฌ์ ์ ์ฅ
// ์: ["abc", "de"] -> "3:abc2:de"
text += `${str.length}:${str}`;
}
return text;
};
var decode = function (s) {
const result = [];
let start = 0;
while (start < s.length) {
// ๊ฐ์ฅ ์ฒซ๋ฒ์งธ์ ๋ฑ์ฅํ๋ ์ฝ๋ก ์์น๋ฅผ ์ฐพ์ ๊ธธ์ด ์ ๋ณด ์ถ์ถ
const mid = s.indexOf(":", start);
const length = parseInt(s.substring(start, mid));
// ๊ธธ์ด ์ ๋ณด๋ฅผ ์ด์ฉํด ์๋ ๋ฌธ์์ด ์ถ์ถํ์ฌ ๊ฒฐ๊ณผ ๋ฐฐ์ด์ ์ถ๊ฐ
result.push(s.substring(mid + 1, mid + 1 + length));
// ๋ค์ ๋ฌธ์์ด์ ์์ ์์น๋ก ์ด๋
start = mid + 1 + length;
}
return result;
};