๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ“ ์•Œ๊ณ ๋ฆฌ์ฆ˜/Softeer

[Javascript(NodeJS)/Softeer] Lv3. ์„ฑ์  ํ‰๊ฐ€ (HSAT 5ํšŒ ์ •๊ธฐ ์ฝ”๋”ฉ ์ธ์ฆํ‰๊ฐ€ ๊ธฐ์ถœ)

728x90

 

https://softeer.ai/practice/6250

 

Softeer - ํ˜„๋Œ€์ž๋™์ฐจ๊ทธ๋ฃน SW์ธ์žฌํ™•๋ณดํ”Œ๋žซํผ

 

softeer.ai

 


(ํ’€์ด ์ฝ”๋“œ๋Š” ํฌ์ŠคํŒ… ๋งจ ์•„๋ž˜์— ์žˆ์Šต๋‹ˆ๋‹ค)

 

์‰ฝ๊ฒŒ ๋ดค๋Š”๋ฐ.. ๋ฌธ์ œ๋ฅผ ์ฝ๋‹ค๋ณด๋‹ˆ ๋‡Œ๊ฐ€ ๊ผฌ์ž„

์ถœ๋ ฅ ํ˜•์‹์ด ์ดํ•ด๊ฐ€ x
์˜ˆ์‹œ ์ธํ’‹์ด 3์ด๋ผ ๋” ํ—ท๊ฐˆ๋ ธ๋‹ค (๋Œ€ํšŒ๊ฐ€ 3๊ฐœ ๊ณ ์ •์ด๋ผ 3*3์œผ๋กœ ๋‚˜์˜ด)

๊ฒจ์šฐ ์ดํ•ด์™„๋ฃŒํ•˜๊ณ  ์ด์ค‘๋ฐ˜๋ณต๋ฌธ์œผ๋กœ ์ผ๋‹จ ํ’€์–ด๋ณด์•˜์Œ

 

์ฒซ๋ฒˆ์งธ ์ œ์ถœ -> 20๋ฒˆ๊นŒ์ง€๋Š” ํ†ต๊ณผํ•˜์ง€๋งŒ 21๋ฒˆ๋ถ€ํ„ฐ ์‹œ๊ฐ„์ดˆ๊ณผ...ใ…Ž.ใ…Ž ๋‚ด๊ฐ€๋ด๋„ ๋‹ต์—†๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜

while(sortResult.length > 0){
    // sortResult์—์„œ max ์ ์ˆ˜ ์ฐพ๊ณ  ์ œ๊ฑฐ
    max = sortResult[sortResult.length-1];
    sortResult.pop();
    let nowIndex = 0;
    // max์ ์ˆ˜๋ฅผ result์—์„œ ์ฐพ๊ณ  ๋“ฑ์ˆ˜ ์‚ฝ์ž…
    // max ์ค‘๋ณต๊ฐ’ ํ™•์ธ -> ์กด์žฌ ์‹œ ๊ฐ™์ด ์ œ๊ฑฐ
    while(result.indexOf(max)>=0){
        nowIndex = result.indexOf(max);
        result[nowIndex] = -1;
        contestGrade[nowIndex] = grade;
    }
    grade ++;
}

 

์—ญ์‹œ. ํ•ด์‹œ๋งต์„ ์จ์•ผํ•  ๊ฒƒ ๊ฐ™์•˜๋‹ค (๊ทผ๋ฐ JS์—์„  ์–ด๋–ป๊ฒŒ ์“ฐ๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ์–ด์„œ ๊ณต๋ถ€ํ•ด์˜ด)

์•„๋ฌด๋ž˜๋„ ๊ฒ€์ƒ‰ + ์ˆœ์œ„๋ถ€์—ฌ ๋ฌธ์ œ๋ผ indexOf ๋Œ€์‹  Map์„ ์“ฐ๋ฉด ํšจ์œจ์ด ํ›จ์”ฌ ์ข‹์•„์งˆ ๊ฒƒ.


JS hashMap ํ•จ์ˆ˜ ๋ฆฌ์ŠคํŠธ

value ์‚ฝ์ž… : set()

value ์ฝ๊ธฐ : get()

์กด์žฌ์—ฌ๋ถ€ ๊ฒ€์ƒ‰ : has()

์‚ญ์ œ : delete()

ํฌ๊ธฐ : size

hash ํƒ์ƒ‰ : for-of ๋ฌธ


 

hashmap ์‚ฌ์šฉํ•ด์„œ Retry -> ๋ฐ”๋กœ ํ•ด๊ฒฐ!!!!

์•„ ํ•จ์ˆ˜๊ฐ€ ๋„ˆ๋ฌด ๋งŽ๋‹ค;; node js ๊ณต์‹๋ฌธ์„œ์— ์—†๋Š” ๊ฒƒ ๊ฐ™๋˜๋ฐ ์—ด์‹ฌํžˆ ์™ธ์›Œ์•ผ์ง€ ใ… ใ… 

 

๋‚˜์˜ ํ’€์ด

const fs = require('fs');
const input = fs.readFileSync(0,'utf-8').trim().split('\n');

const n = Number(input[0]); // ์ฐธ๊ฐ€์ž ์ˆ˜(๊ฐ€๋กœ) // ๋Œ€ํšŒ ์ˆ˜(์„ธ๋กœ) = 3์œผ๋กœ ๊ณ ์ •๋จ
const results = input.splice(1,n);
let sumList = new Array(n).fill(0); // ์ฐธ๊ฐ€์ž๋“ค์˜ ์ ์ˆ˜ ์ดํ•ฉ
let gradeList = [];

results.map(r => {
    let result = r.split(' ').map(Number);
    result.map((score,idx)=>{ // ์ดํ•ฉ ๊ตฌํ•˜๊ธฐ
            sumList[idx] += score;
        })
    }
)
results.push(sumList.join(" ")); // sumList๋Š” ๋ฐฐ์—ด์ด๋ผ์„œ ๋ฌธ์ž์—ด๋กœ ๋ฐ”๊ฟ”์ฃผ๊ธฐ

results.map((res)=>{
    let result = res.trim().split(' ').map(Number);
    let sortResult = [...result].sort((a,b)=>b-a); // ์›๋ณธ ์œ ์ง€ํ•˜๋ฉฐ ์ •๋ ฌ
    let grade = 1;
    let gradeMap = new Map(); // ์ ์ˆ˜&๋“ฑ์ˆ˜ ์Œ
    for(let i=0; i<n; ++i){
        if(!gradeMap.has(sortResult[i])) gradeMap.set(sortResult[i], grade);
        grade++;
    }
    // ๊ฐ๊ฐ gradeMap ์ ์ˆ˜์— ํ•ด๋‹นํ•˜๋Š” ๋“ฑ์ˆ˜ ๋ถ€์—ฌ
    let contestGrade =[];
    result.map((re)=>{
        contestGrade.push(gradeMap.get(re));
    })
    gradeList.push(contestGrade);
})

for(let i=0; i<4; ++i){
    let j = gradeList[i].join(" ");
    console.log(j);
}

 

728x90