// ์ ํ ์คํฌ์ด๋ ์ด๋ค ์คํฌ์ ๋ฐฐ์ฐ๊ธฐ ์ ์ ๋จผ์ ๋ฐฐ์์ผ ํ๋ ์คํฌ์ ๋ปํฉ๋๋ค.
// ์๋ฅผ ๋ค์ด ์ ํ ์คํฌ ์์๊ฐ ์คํํฌ โ ๋ผ์ดํธ๋ ๋ณผํธ โ ์ฌ๋์ผ๋,
// ์ฌ๋๋ฅผ ๋ฐฐ์ฐ๋ ค๋ฉด ๋จผ์ ๋ผ์ดํธ๋ ๋ณผํธ๋ฅผ ๋ฐฐ์์ผ ํ๊ณ , ๋ผ์ดํธ๋ ๋ณผํธ๋ฅผ ๋ฐฐ์ฐ๋ ค๋ฉด ๋จผ์ ์คํํฌ๋ฅผ ๋ฐฐ์์ผ ํฉ๋๋ค.
// ์ ์์์ ์๋ ๋ค๋ฅธ ์คํฌ(ํ๋ง ๋ฑ)์ ์์์ ์๊ด์์ด ๋ฐฐ์ธ ์ ์์ต๋๋ค.
// ๋ฐ๋ผ์ ์คํํฌ โ ํ๋ง โ ๋ผ์ดํธ๋ ๋ณผํธ โ ์ฌ๋์ ๊ฐ์ ์คํฌํธ๋ฆฌ๋ ๊ฐ๋ฅํ์ง๋ง,
// ์ฌ๋ โ ์คํํฌ๋ ๋ผ์ดํธ๋ ๋ณผํธ โ ์คํํฌ โ ํ๋ง โ ์ฌ๋์ ๊ฐ์ ์คํฌํธ๋ฆฌ๋ ๋ถ๊ฐ๋ฅํฉ๋๋ค.
// ์ ํ ์คํฌ ์์ skill๊ณผ ์ ์ ๋ค์ด ๋ง๋ ์คํฌํธ๋ฆฌ1๋ฅผ ๋ด์ ๋ฐฐ์ด skill_trees๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋,
// ๊ฐ๋ฅํ ์คํฌํธ๋ฆฌ ๊ฐ์๋ฅผ return ํ๋ solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
// ์คํฌ์ ์ํ๋ฒณ ๋๋ฌธ์๋ก ํ๊ธฐํ๋ฉฐ, ๋ชจ๋ ๋ฌธ์์ด์ ์ํ๋ฒณ ๋๋ฌธ์๋ก๋ง ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค.
// ์คํฌ ์์์ ์คํฌํธ๋ฆฌ๋ ๋ฌธ์์ด๋ก ํ๊ธฐํฉ๋๋ค.
// ์๋ฅผ ๋ค์ด, C โ B โ D ๋ผ๋ฉด "CBD"๋ก ํ๊ธฐํฉ๋๋ค
// ์ ํ ์คํฌ ์์ skill์ ๊ธธ์ด๋ 1 ์ด์ 26 ์ดํ์ด๋ฉฐ, ์คํฌ์ ์ค๋ณตํด ์ฃผ์ด์ง์ง ์์ต๋๋ค.
// skill_trees๋ ๊ธธ์ด 1 ์ด์ 20 ์ดํ์ธ ๋ฐฐ์ด์
๋๋ค.
// skill_trees์ ์์๋ ์คํฌ์ ๋ํ๋ด๋ ๋ฌธ์์ด์
๋๋ค.
// skill_trees์ ์์๋ ๊ธธ์ด๊ฐ 2 ์ด์ 26 ์ดํ์ธ ๋ฌธ์์ด์ด๋ฉฐ, ์คํฌ์ด ์ค๋ณตํด ์ฃผ์ด์ง์ง ์์ต๋๋ค.
function solution(skill, skill_trees) {
let answer = 0
for(let i = 0 ; i <skill_trees.length; i++ ){
let filter =""
for(let l = 0; l < skill_trees[i].length; l++){
if( skill.includes(skill_trees[i][l]) ) {
filter += skill_trees[i][l]
}
}
// ์ ํ ์คํฌํธ๋ฆฌ ์กฐ๊ฑด์ด ํ๋๋ ์ฑ๋ฆฝํ์ง ์๋ ์คํฌํธ๋ฆฌ์ผ ๋,
// ๋ฌด์กฐ๊ฑด ๊ฐ๋ฅํ ์คํฌํธ๋ฆฌ๋ฅผ ๋ง๋ค์ด์ฃผ๊ธฐ ์ํด, skill ๋ฐ์ดํฐ๋ฅผ ํ ๋นํ๋ค.
if( filter === "") filter = skill
if ( skill.includes( filter ) ) {
if( skill.indexOf( filter[0] ) === 0 ){
// ๊ฐ๋ฅํ ์คํฌํธ๋ฆฌ๋ค~
answer++
}
}
}
return answer
}
// reduce() ์ฌ์ฉํ ํ์ด
function solution(skill, skill_trees) {
return skill_trees.reduce( ( acc,cur ) => {
const filter = cur.split("").filter( str => {
return skill.includes( str )
}).join("")
return acc += ( skill.includes( filter ) &&
skill.indexOf( filter[0]) === 0 ||
filter === "" ) ? 1: 0
}, 0)
}
<aside> ๐ค ์ ํ ์คํธ์ฝ๋๋ฅผ ์จ์ผ ํ๋๋ฐ? ๋ชฐ๋ผ ๋ด์งํ๋๋ผ ๋ชป๋ค์์ด
</aside>
Jest
: ํ
์คํธ ์ ์ฉ ํ๋ ์์ํฌTDD
(Test Driven Development) : ํ
์คํธ ์ฃผ๋ ๊ฐ๋ฐ~.spec.ts
ํ์์ ํ
์คํธ ์ฝ๋๋ผ๊ณ ์ธ์
beforeEach : Testing ์ด์ ์ ์คํ๋๋ ๋ถ๋ถ
describe : ์ฌ๋ฌ๊ฐ์ ํ ์คํธ ๋ชจ์๋์ ๊ทธ๋ฃน ๋จ์
test : ํ ํ ์คํธ ๋จ์
// 1. ํ ๊ฐ ํ
์คํธ ํ๊ธฐ
it("๋ํ๊ธฐ ํ
์คํธ", () => {
const a = 1
const b = 2
expect(a+b).toBe(3)
})
// 2. ์ฌ๋ฌ๊ฐ ๋ฌถ์์ผ๋ก ํ
์คํธํ๊ธฐ
describe("๋์ ํ
์คํธ ๊ทธ๋ฃน", () => {
it("๋ํ๊ธฐ ํ
์คํธ", () => {
const a = 1
const b = 2
expect(a+b).toBe(3)
})
it("๊ณฑํ๊ธฐ ํ
์คํธ", () => {
const a = 1
const b = 2
expect(a*b).toBe(2)
})
})