๋ฌธ์ : https://school.programmers.co.kr/learn/courses/30/lessons/42577
์นดํ ๊ณ ๋ฆฌ : ํด์
์ถ์ฒ: ํ๋ก๊ทธ๋๋จธ์ค ์ฝ๋ฉ ํ ์คํธ ๊ณ ๋์ Kit, https://school.programmers.co.kr/learn/challenges?tab=algorithm_practice_kit
ํ๋ก๊ทธ๋๋จธ์ค ์ฌ์ดํธ์์๋ JS ์ธ์ด๋ฅผ ์ง์ํด์ฃผ์ง ์๋ ๋ฌธ์ ์์ง๋ง ๊ทธ๋ฅ JS๋ก ํ์ด๋ณด์๋ค.
๊ฐ ์ ํ๋ฒํธ๋ฅผ map์ ์ ์ฅํด๋๊ณ , ํน์ ์ ํ๋ฒํธ์ ์ ๋์ด๊ฐ ๋ ์ ์๋ ๋ฌธ์์ด๋ค์ ํ๋์ฉ ๊ฒ์ฌํ๋ฉด์ ๊ฐ ๋ฌธ์์ด์ด map์ ์๋์ง๋ฅผ ํ์ธํ ๊ฒ์ด๋ค.
ex)
์ ํ๋ฒํธ ๋ชฉ๋ก์ผ๋ก["123", "456", "789"]
๊ฐ ์ฃผ์ด์ก๋ค๋ฉด, map์ ๋ค์๊ณผ ๊ฐ์ ๊ตฌ์กฐ๋ก ๋ง๋ค์ด์ง ๊ฒ์ด๊ณ
{
"123" : 1,
"456" : 1,
"789" : 1
}
"123"
์ ์ ๋์ด๊ฐ ๋ ์ ์๋ 1
, 12
๊ฐ map์ ์๋์ง ํ์ธํ ๊ฒ์ด๊ณ , ์ด๋ฅผ ๋๋จธ์ง "456"
, "789"
์ ๋ํด์๋ ๋ฐ๋ณตํ ๊ฒ์ด๋ค. ํ์ํ๋ฉด์ ํน์ ์ ํ๋ฒํธ์ ์ ๋์ด๊ฐ map์ ์๋ค๋ฉด false๋ฅผ ๋ฐํํ๊ณ ๋๊น์ง ์์๋ค๋ฉด true๋ฅผ ๋ฐํํ๋ค.
function solution(phone_book) {
const table = new Map();
phone_book.forEach((element) => {
table.set(element, 1);
});
for (let i = 0; i < phone_book.length; i++) {
for (let j = 1; j < phone_book[i].length; j++) {
if (table.get(phone_book[i].substring(0, j))) {
return false;
}
}
}
return true;
}
console.log(solution(["123", "456", "789"])); // true
console.log(solution(["119", "97674223", "1195524421"])); // false
ํน์ ์ ๋์ด๊ฐ ์กด์ฌํ๋์ง ์ฌ๋ถ๋ฅผ ํ๋จํ ๋ map์ ์ฌ์ฉํ ๊ฒ์ฒ๋ผ, ์์์ ์๊ด ์์ด ํน์ ๊ฐ์ ์กด์ฌ ์ฌ๋ถ๋ง์ ๋น ๋ฅด๊ฒ ํ๋จํ ๋ map์ ์ฌ์ฉํ๋ ๊ฒ ์ข๋ค๊ณ ๋๊ผ๋ค. map ์๋ฃ๊ตฌ์กฐ๋ key๊ฐ์ ํตํด O(1)
์ value ๊ฐ์ ์ ๊ทผํ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.