์ฝ”๋”ฉํ…Œ์ŠคํŠธ/ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

[Lv.1] ์ถ”์–ต ์ ์ˆ˜

๋ฒผ๋ฆฌ01 2024. 6. 20. 19:28

๋ฌธ์ œ ์„ค๋ช…

์‚ฌ์ง„๋“ค์„ ๋ณด๋ฉฐ ์ถ”์–ต์— ์ –์–ด ์žˆ๋˜ ๋ฃจ๋Š” ์‚ฌ์ง„๋ณ„๋กœ ์ถ”์–ต ์ ์ˆ˜๋ฅผ ๋งค๊ธฐ๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์ง„ ์†์— ๋‚˜์˜ค๋Š” ์ธ๋ฌผ์˜ ๊ทธ๋ฆฌ์›€ ์ ์ˆ˜๋ฅผ ๋ชจ๋‘ ํ•ฉ์‚ฐํ•œ ๊ฐ’์ด ํ•ด๋‹น ์‚ฌ์ง„์˜ ์ถ”์–ต ์ ์ˆ˜๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์‚ฌ์ง„ ์† ์ธ๋ฌผ์˜ ์ด๋ฆ„์ด `["may", "kein", "kain"]`์ด๊ณ  ๊ฐ ์ธ๋ฌผ์˜ ๊ทธ๋ฆฌ์›€ ์ ์ˆ˜๊ฐ€ `[5์ , 10์ , 1์ ]`์ผ ๋•Œ ํ•ด๋‹น ์‚ฌ์ง„์˜ ์ถ”์–ต ์ ์ˆ˜๋Š” 16(5 + 10 + 1)์ ์ด ๋ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์‚ฌ์ง„ ์† ์ธ๋ฌผ์˜ ์ด๋ฆ„์ด `["kali", "mari", "don", "tony"]`์ด๊ณ  `["kali", "mari", "don"]`์˜ ๊ทธ๋ฆฌ์›€ ์ ์ˆ˜๊ฐ€ ๊ฐ๊ฐ `[11์ , 1์ , 55์ ]]`์ด๊ณ , `"tony"`๋Š” ๊ทธ๋ฆฌ์›€ ์ ์ˆ˜๊ฐ€ ์—†์„ ๋•Œ, ์ด ์‚ฌ์ง„์˜ ์ถ”์–ต ์ ์ˆ˜๋Š” 3๋ช…์˜ ๊ทธ๋ฆฌ์›€ ์ ์ˆ˜๋ฅผ ํ•ฉํ•œ 67(11 + 1 + 55)์ ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ์›Œํ•˜๋Š” ์‚ฌ๋žŒ์˜ ์ด๋ฆ„์„ ๋‹ด์€ ๋ฌธ์ž์—ด ๋ฐฐ์—ด `name`, ๊ฐ ์‚ฌ๋žŒ๋ณ„ ๊ทธ๋ฆฌ์›€ ์ ์ˆ˜๋ฅผ ๋‹ด์€ ์ •์ˆ˜ ๋ฐฐ์—ด `yearning`, ๊ฐ ์‚ฌ์ง„์— ์ฐํžŒ ์ธ๋ฌผ์˜ ์ด๋ฆ„์„ ๋‹ด์€ ์ด์ฐจ์› ๋ฌธ์ž์—ด ๋ฐฐ์—ด `photo`๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, ์‚ฌ์ง„๋“ค์˜ ์ถ”์–ต ์ ์ˆ˜๋ฅผ `photo`์— ์ฃผ์–ด์ง„ ์ˆœ์„œ๋Œ€๋กœ ๋ฐฐ์—ด์— ๋‹ด์•„ returnํ•˜๋Š” solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”.

 

 

์ž…์ถœ๋ ฅ ์˜ˆ

["may", "kein", "kain", "radi"] [5, 10, 1, 3] [["may", "kein", "kain", "radi"],["may", "kein", "brin", "deny"], ["kon", "kain", "may", "coni"]] [19, 15, 6]
["kali", "mari", "don"] [11, 1, 55] [["kali", "mari", "don"], ["pony", "tom", "teddy"], ["con", "mona", "don"]] [67, 0, 55]
["may", "kein", "kain", "radi"] [5, 10, 1, 3] [["may"],["kein", "deny", "may"], ["kon", "coni"]] [5, 15, 0]

 

 

 

๐Ÿ“ŒMap

Map ๊ฐ์ฒด๋Š” ํ‚ค์™€ ๊ฐ’์˜ ์Œ์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ์ปฌ๋ ‰์…˜์ด๋‹ค. ํ‚ค๊ฐ’์€ ์ค‘๋ณต์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š์œผ๋ฉฐ, ๊ฐ’์€ ์ค‘๋ณต์„ ํ—ˆ์šฉํ•œ๋‹ค. ๊ฐ์ฒด์™€ ์œ ์‚ฌํ•˜์ง€๋งŒ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ฐจ์ด๊ฐ€ ์žˆ๋‹ค.

 

๊ตฌ๋ถ„ ๊ฐ์ฒด Map
ํ‚ค๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ’ ๋ฌธ์ž์—ด, ์‹ฌ๋ณผ ๊ฐ์ฒด๋ฅผ ํฌํ•จํ•œ ๋ชจ๋“  ๊ฐ’
์ดํ„ฐ๋Ÿฌ๋ธ” X O
์š”์†Œ ๊ฐœ์ˆ˜ ํ™•์ธ Object.keys(obj).length map.size

 

 

์ƒ์„ฑ

Map ๊ฐ์ฒด๋Š” Map ์ƒ์„ฑ์ž ํ•จ์ˆ˜๋กœ ์ƒ์„ฑํ•œ๋‹ค. ์ธ์ž๋กœ ์ „๋‹ฌ๋˜๋Š” ๊ฐ’์ด ์—†์œผ๋ฉด ๋นˆ Map ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋œ๋‹ค. 

Map์˜ ์ƒ์„ฑ์ž ํ•จ์ˆ˜์˜ ์ธ์ˆ˜๋กœ ์ „๋‹ฌํ•œ ์ดํ„ฐ๋Ÿฌ๋ธ”์— ์ค‘๋ณต๋œ ํ‚ค๋ฅผ ๊ฐ–๋Š” ์š”์†Œ๊ฐ€ ์กด์žฌํ•˜๋ฉด ๊ฐ’์„ ๋ฎ์–ด์“ด๋‹ค.

 

const map = new Map();

 

 

 

์‚ฝ์ž…

`set()`

์ฒซ๋ฒˆ์งธ ์ธ์ž๋กœ ํ‚ค๊ฐ’, ๋‘๋ฒˆ์งธ ์ธ์ž๋กœ ์š”์†Œ๋ฅผ ์ „๋‹ฌํ•œ๋‹ค.

 

์ทจ๋“

`get()`

์ธ์ž๋กœ ํ‚ค๊ฐ’์„ ์ „๋‹ฌํ•˜๋ฉด ์š”์†Œ๋ฅผ ๋ฐ˜ํ™˜ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค. ์š”์†Œ๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์œผ๋ฉด `undefined`๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

 

ํ™•์ธ

`has()`

์ „๋‹ฌ๋ฐ›์€ ์ธ์ž๋ฅผ ํ‚ค๊ฐ’์œผ๋กœ ํ•˜๋Š” ์š”์†Œ๊ฐ€ ์กด์žฌํ•˜๋Š”์ง€ ์•„๋‹Œ์ง€ ์—ฌ๋ถ€๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. 

 

์‚ญ์ œ

`delete()`

์ธ์ž๋กœ ํ‚ค๊ฐ’์„ ์ „๋‹ฌ๋ฐ›์•„ ์‚ญ์ œํ•œ๋‹ค. ์กด์žฌํ•˜์ง€ ์•Š๋Š” ํ‚ค๋กœ ์‚ญ์ œ๋ฅผ ์‹œ๋„ํ•˜๋ฉด ์—๋Ÿฌ ์—†์ด ๋ฌด์‹œํ•œ๋‹ค.

 

`clear()`

Map ๊ฐ์ฒด ๋‚ด ๋ชจ๋“  ์š”์†Œ๋ฅผ ์ผ๊ด„ ์‚ญ์ œํ•œ๋‹ค. ๋ฐ˜ํ™˜ ๊ฐ’์€ `undefined`

 

 

 

๐Ÿ“Œํ’€์ด

1. ์ด๋ฆ„ ๋ฐฐ์—ด `name`๊ณผ ๊ทธ๋ฆฌ์›€ ์ ์ˆ˜ ๋ฐฐ์—ด `yearning`์ด ๋‚˜๋ž€ํžˆ ์ฃผ์–ด์ง€๊ณ  ์žˆ์œผ๋ฏ€๋กœ Map ๊ฐ์ฒด์— ํ‚ค, ๊ฐ’์˜ ์Œ์œผ๋กœ ์‚ฝ์ž…ํ•œ๋‹ค.

2. ์‚ฌ์ง„ ๋ฐฐ์—ด `photo`๋ฅผ ์ˆœํšŒํ•˜๋ฉฐ ํ–‰์˜ ๊ฐ ์š”์†Œ๋ฅผ ํ‚ค๊ฐ’์œผ๋กœ Map ๊ฐ์ฒด์—์„œ ์š”์†Œ๋ฅผ ์ทจ๋“ํ•˜์—ฌ ์ข…ํ•ฉ ์ ์ˆ˜๋ฅผ ๊ตฌํ•œ๋‹ค.

3. `answer` ๋ฐฐ์—ด์— ์‚ฝ์ž…ํ•˜์—ฌ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

 

 

function solution(name, yearning, photo) {
    var answer = [];
    let missing = new Map();

    for(i = 0; i < name.length; i++){
        missing.set(name[i], yearning[i]);
    }

    photo.forEach( e => {
        let temp = 0;
        e.forEach( v => temp += missing.get(v) || 0 );
        answer.push(temp);
    } );


    return answer;
}