๐Ÿง  codingtest/javascript 100์ œ

๋ฌธ์ œ37. ๋ฐ˜์žฅ์„ ๊ฑฐ

awesomeyelim 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 ๊ฐ’์œผ๋กœ ๋งŒ๋“ค์–ด์„œ ํ•ด๋„๋จ