ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • ๋ฌธ์ œ37. ๋ฐ˜์žฅ์„ ๊ฑฐ
    ๐Ÿง  codingtest/javascript 100์ œ 2022. 3. 24. 10:05
    728x90

    ํ•™์ƒ๋“ค์ด ๋ฝ‘์€ ํ›„๋ณด๋ฅผ ์ž…๋ ฅ๋ฐ›์„์‹œ,
    ๋ฝ‘ํžŒ ํ•™์ƒ์˜ ์ด๋ฆ„๊ณผ ๋ฐ›์€ ํ‘œ ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ

    //์ž…๋ ฅ
    ์˜ˆ๋ฆผ ์˜ˆ๋ฆผ ์˜ˆ๋ฆผ ์˜ˆ์ธ ๋ณด์ธ ํ˜œ์ง€ ํ˜œ์ง€ ์˜ˆ์ผ ์˜ˆ์ธ ์˜ˆ์ผ 
    //์ถœ๋ ฅ
    ์˜ˆ๋ฆผ(์ด)๊ฐ€ ์ด 3ํ‘œ๋กœ ๋ฐ˜์žฅ์ด ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

     

    ๋ฏธ๋ฆฌ ! ์ƒ๊ฐํ•ด๋ด์•ผํ•˜๋Š”๊ฒƒ

    • ์˜ˆ๋ฆผ : 3ํ‘œ/ ์˜ˆ์ธ : 2ํ‘œ/ ๋ณด์ธ : 1ํ‘œ/ ํ˜œ์ง€ : 2ํ‘œ/ ์˜ˆ์ผ : 1ํ‘œ -> ์ด ๊ตฌ์กฐ๋กœ ๋‚˜ํƒ€๋‚ผ๋ ค๋ฉด ๊ฐ์ฒดํ‘œ๊ธฐ๊ฐ€ ํŽธ๋ฆฌํ•จ
    vote = {
        ์˜ˆ๋ฆผ : 3,
        ์˜ˆ์ธ : 2,
        ๋ณด์ธ : 1,
        ํ˜œ์ง€ : 2,
        ์˜ˆ์ผ : 1
    }
    • ๊ฐ์ฒด ์ ‘๊ทผ๋ฐฉ์‹ ์ƒ๊ฐํ•ด๋ณด๊ธฐ




      1. ๋ฌธ์ž์—ด๋กœ ๋ฐ›๋Š” ์ž…๋ ฅ์„ ๋ฐฐ์—ด๋กœ ๋‚˜๋ˆ ์ค€๋‹ค -> .split(" "), key์™€ value๋ฅผ ๋‹ด์„ ๋นˆ๊ฐ์ฒด ๋งŒ๋“ค๊ธฐ -> let result = {};
    // let array = prompt().split(" ");
    let array = '์˜ˆ๋ฆผ ์˜ˆ๋ฆผ ์˜ˆ๋ฆผ ์˜ˆ์ธ ๋ณด์ธ ํ˜œ์ง€ ํ˜œ์ง€ ์˜ˆ์ผ ์˜ˆ์ธ ์˜ˆ์ผ'.split(" "); 
    let result = {};
    let winner;

     

     

    1. for..of ์„ ๋Œ๋ ค์ค€๋‹ค. (for..in -> index ์ถœ๋ ฅ/ for..of -> element ์ถœ๋ ฅ)
    // let array = prompt().split(" ");
    let array = '์˜ˆ๋ฆผ ์˜ˆ๋ฆผ ์˜ˆ๋ฆผ ์˜ˆ์ธ ๋ณด์ธ ํ˜œ์ง€ ํ˜œ์ง€ ์˜ˆ์ผ ์˜ˆ์ธ ์˜ˆ์ผ'.split(" "); 
    let result = {};
    let winner;
    
    for(let el of array) {
        let val = el;
        console.log(val) // ์˜ˆ๋ฆผ ์˜ˆ๋ฆผ ์˜ˆ๋ฆผ ์˜ˆ์ธ ๋ณด์ธ ํ˜œ์ง€ ํ˜œ์ง€ ์˜ˆ์ผ ์˜ˆ์ธ ์˜ˆ์ผ
    }

     

     

    1. result[key] = value ๊ฐ’์— ์ ‘๊ทผํ•˜๋Š” ์‚ผํ•ญ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
    // let array = prompt().split(" ");
    let array = '์˜ˆ๋ฆผ ์˜ˆ๋ฆผ ์˜ˆ๋ฆผ ์˜ˆ์ธ ๋ณด์ธ ํ˜œ์ง€ ํ˜œ์ง€ ์˜ˆ์ผ ์˜ˆ์ธ ์˜ˆ์ผ'.split(" "); 
    let result = {};
    let winner;
    
    for(let el of array) {
        let val = el;
        result[val] = result[val] === undefined ? 1 : result[val] += 1 // result[val]์— ์ฒ˜์Œ์ ‘๊ทผ์‹œ undefined ๋ฅผ ์ถœ๋ ฅ -> 1 / result[val] ์€ 1์ด๋˜๋ฉฐ ๋‹ค์‹œ์ˆœํ™˜ํ•˜๊ฒŒ ๋จ
    }

     

     

     

    1. ์œ„์— ์„ ์–ธํ•ด์ค€ winner์— ํ‚ค๊ฐ’์„ ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•œ ๋ฉ”์„œ๋“œ Object.keys()
      ๋ฉ”์„œ๋“œ reduce()๋ฅผ ๋งค๊ฐœ๋ณ€์ˆ˜์— ๋„ฃ์–ด ์‚ผํ•ญ์—ฐ์‚ฐ์ž๋ฅผ ํ†ตํ•ด 1๋“ฑ์„ ์„ ๋ณ„ํ•จ
    // let array = prompt().split(" ");
    let array = '์˜ˆ๋ฆผ ์˜ˆ๋ฆผ ์˜ˆ๋ฆผ ์˜ˆ์ธ ๋ณด์ธ ํ˜œ์ง€ ํ˜œ์ง€ ์˜ˆ์ผ ์˜ˆ์ธ ์˜ˆ์ผ'.split(" "); 
    let result = {};
    let winner;
    
    for(let el of array) {
        let val = el;
        result[val] = result[val] === undefined ? 1 : result[val] += 1 // result[val]์— ์ฒ˜์Œ์ ‘๊ทผ์‹œ undefined ๋ฅผ ์ถœ๋ ฅ -> 1 / result[val] ์€ 1์ด๋˜๋ฉฐ ๋‹ค์‹œ์ˆœํ™˜ํ•˜๊ฒŒ ๋จ
    }
    console.log(result);// { '์˜ˆ๋ฆผ': 3, '์˜ˆ์ธ': 2, '๋ณด์ธ': 1, 'ํ˜œ์ง€': 2, '์˜ˆ์ผ': 2 }
    
    winner = Object.keys(result)
    console.log(winner) // [ '์˜ˆ๋ฆผ', '์˜ˆ์ธ', '๋ณด์ธ', 'ํ˜œ์ง€', '์˜ˆ์ผ' ]
    
    winner = Object.keys(result).reduce(function(a,b){
        return result[a] > result[b] ? a : b; // ์—ฌ๊ธฐ์„œ ํ‘œ์ˆœ์œ„๊ฐ€ ๊ฐˆ๋ฆผ
    })
    console.log(winner) //์˜ˆ๋ฆผ

     

     

     

    1. console.log์— ๋ฆฌํ„ฐ๋Ÿด๋กœ ์ฐ์–ด์ค€๋‹ค. (๋ช‡ํ‘œ์ธ์ง€๋Š” value ๊ฐ’ ํ™˜์‚ฐํ•˜์—ฌ ์ถœ๋ ฅ)
    // let array = prompt().split(" ");
    let array = '์˜ˆ๋ฆผ ์˜ˆ๋ฆผ ์˜ˆ๋ฆผ ์˜ˆ์ธ ๋ณด์ธ ํ˜œ์ง€ ํ˜œ์ง€ ์˜ˆ์ผ ์˜ˆ์ธ ์˜ˆ์ผ'.split(" "); 
    let result = {};
    let winner;
    
    for(let el of array) {
        let val = el;
        result[val] = result[val] === undefined ? 1 : result[val] += 1 // result[val]์— ์ฒ˜์Œ์ ‘๊ทผ์‹œ undefined ๋ฅผ ์ถœ๋ ฅ -> 1 / result[val] ์€ 1์ด๋˜๋ฉฐ ๋‹ค์‹œ์ˆœํ™˜ํ•˜๊ฒŒ ๋จ
    }
    
    winner = Object.keys(result).reduce(function(a,b){
        return result[a] > result[b] ? a : b;
    })
    
    console.log(`${winner}์ด(๊ฐ€) ์ด ${result[winner]}ํ‘œ๋กœ ๋ฐ˜์žฅ์ด ๋˜์—ˆ์Šต๋‹ˆ๋‹ค`)

     

    ์กฐ๊ธˆ์˜ ์‹œ๋„ํ•ด๋ด๋„ ์ข‹์„์ 

    • ๋ฌผ๋ก  new Set์„ ์ด์šฉํ•˜์—ฌ ๊ฒน์น˜๋Š”๊ฑฐ ์—†์ด ๋ฐ”๋กœ key ๊ฐ’์œผ๋กœ ๋งŒ๋“ค์–ด์„œ ํ•ด๋„๋จ

    ๋Œ“๊ธ€