Algorithm/Programmers

Lv 1. ๋ชจ์˜๊ณ ์‚ฌ

Earth Wave 2022. 2. 27. 18:25

 

๋ฌธ์ œ 

 

์ˆ˜ํฌ์ž๋Š” ์ˆ˜ํ•™์„ ํฌ๊ธฐํ•œ ์‚ฌ๋žŒ์˜ ์ค€๋ง์ž…๋‹ˆ๋‹ค. ์ˆ˜ํฌ์ž ์‚ผ์ธ๋ฐฉ์€ ๋ชจ์˜๊ณ ์‚ฌ์— ์ˆ˜ํ•™ ๋ฌธ์ œ๋ฅผ ์ „๋ถ€ ์ฐ์œผ๋ ค ํ•ฉ๋‹ˆ๋‹ค. ์ˆ˜ํฌ์ž๋Š” 1๋ฒˆ ๋ฌธ์ œ๋ถ€ํ„ฐ ๋งˆ์ง€๋ง‰ ๋ฌธ์ œ๊นŒ์ง€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ฐ์Šต๋‹ˆ๋‹ค.

1๋ฒˆ ์ˆ˜ํฌ์ž๊ฐ€ ์ฐ๋Š” ๋ฐฉ์‹: 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, ...
2๋ฒˆ ์ˆ˜ํฌ์ž๊ฐ€ ์ฐ๋Š” ๋ฐฉ์‹: 2, 1, 2, 3, 2, 4, 2, 5, 2, 1, 2, 3, 2, 4, 2, 5, ...
3๋ฒˆ ์ˆ˜ํฌ์ž๊ฐ€ ์ฐ๋Š” ๋ฐฉ์‹: 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, ...

1๋ฒˆ ๋ฌธ์ œ๋ถ€ํ„ฐ ๋งˆ์ง€๋ง‰ ๋ฌธ์ œ๊นŒ์ง€์˜ ์ •๋‹ต์ด ์ˆœ์„œ๋Œ€๋กœ ๋“ค์€ ๋ฐฐ์—ด answers๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ๊ฐ€์žฅ ๋งŽ์€ ๋ฌธ์ œ๋ฅผ ๋งžํžŒ ์‚ฌ๋žŒ์ด ๋ˆ„๊ตฌ์ธ์ง€ ๋ฐฐ์—ด์— ๋‹ด์•„ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”.

 

์ œํ•œ ์กฐ๊ฑด

  • ์‹œํ—˜์€ ์ตœ๋Œ€ 10,000 ๋ฌธ์ œ๋กœ ๊ตฌ์„ฑ๋˜์–ด์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋ฌธ์ œ์˜ ์ •๋‹ต์€ 1, 2, 3, 4, 5์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค.
  • ๊ฐ€์žฅ ๋†’์€ ์ ์ˆ˜๋ฅผ ๋ฐ›์€ ์‚ฌ๋žŒ์ด ์—ฌ๋Ÿฟ์ผ ๊ฒฝ์šฐ, returnํ•˜๋Š” ๊ฐ’์„ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌํ•ด์ฃผ์„ธ์š”.
์ž…๋ ฅ๊ฐ’  ์ถœ๋ ฅ๊ฐ’
[1, 2, 3, 4, 5] [1]
[1, 3, 2, 4, 2] [1, 2, 3]

 

 

(1) ๋‚˜์˜ ์ ‘๊ทผ ๋ฐฉ๋ฒ•

function solution(answers) {
    let answer = [];
    let new_answer = [];
    let count_1 = 0;
    let count_2 = 0;
    let count_3 = 0;
    let max = 0;
    
    // 1. 1๋ฒˆ, 2๋ฒˆ, 3๋ฒˆ ์ˆ˜ํฌ์ž ์ฐ๋Š” ๋ฐฉ์‹ ๋ฐฐ์—ด๋กœ ์ •์˜ํ•œ๋‹ค. 
    let first_arr = [1, 2, 3, 4, 5];
    let second_arr = [2, 1, 2, 3 , 2, 4, 2, 5];
    let third_arr = [3, 3, 1, 1, 2, 2 , 4, 4, 5, 5];
    
    // 2. ์ฐ๋Š” ๋ฐฉ์‹ ๋ฐฐ์—ด๊ณผ ์ •๋‹ต ๋ฐฐ์—ด์„ ๋น„๊ตํ•˜์—ฌ ๋งž์€ ๊ฐœ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. 
    for (let i = 0; i < answers.length; i++) {
        if (answers[i] == first_arr[i]) {
            count_1++;
        }
    }
    answer.push(count_1);
    
     for (let i = 0; i < answers.length; i++) {
        if (answers[i] == second_arr[i]) {
            count_2++;
        }
    }
    answer.push(count_2);
    
    for (let i = 0; i < answers.length; i++) {
        if (answers[i] == third_arr[i]) {
            count_3++;
        }
    }
    answer.push(count_3);
    console.log(answer);
    
    // 3. ๊ฐ€์žฅ ๋†’์€ ์ ์ˆ˜๋ฅผ ๋ฐ›์€ ์‚ฌ๋žŒ์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. 
    for (let i = 0; i < answer.length; i++) {
        if (max < answer[i]) {
            max = answer[i];
            
        }
    }
    console.log(max);
    
    for (let i = 0; i < answer.length; i++) {
       if (max == answer[i]) {
           new_answer.push(i + 1);
       }
    }
    new_answer.sort((a,b) => a - b);
    return new_answer;
}

 

1. 1๋ฒˆ, 2๋ฒˆ, 3๋ฒˆ ์ˆ˜ํฌ์ž ์ฐ๋Š” ๋ฐฉ์‹์„ ๋ฐฐ์—ด๋กœ ์ •์˜ํ•œ๋‹ค.

2. ์ฐ๋Š” ๋ฐฉ์‹ ๋ฐฐ์—ด๊ณผ ์ •๋‹ต ๋ฐฐ์—ด์„ ๋น„๊ตํ•˜์—ฌ ๋งž์€ ๊ฐœ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. 

3. ์ตœ์ข…์ ์œผ๋กœ ๊ฐ€์žฅ ๋†’์€ ์ ์ˆ˜๋ฅผ ๋ฐ›์€ ์‚ฌ๋žŒ์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. 

 

→ ํ…Œ์ŠคํŠธ์ผ€์ด์Šค๋Š” ๋งž์ท„์ง€๋งŒ ์ตœ์ข…์ ์œผ๋กœ๋Š” 42.9/100 ์ด๋ผ๋Š” ๊ฒฐ๊ณผ๋ฅผ ๋ฐ›๊ฒŒ ๋˜์—ˆ๋‹ค. 

 

 

(2) ์ •๋‹ต ์ฝ”๋“œ  ๋ฐ ์ ‘๊ทผ ๋ฐฉ๋ฒ• 

function solution(answers) {
    const answer = [];
    
    // ์ˆ˜ํฌ์ž๋“ค์ด ์ฐ๋Š” ๋ฐฉ์‹์˜ ํŒจํ„ด(s1, s2, s3)๊ณผ ์ฑ„์ ํ‘œ(score)๋ฅผ ๊ฐ๊ฐ ๋ฐฐ์—ด๋กœ ๋ณ€ํ™˜
    const s1 = [1, 2, 3, 4, 5];
    const s2 = [2, 1, 2, 3, 2, 4, 2, 5];
    const s3 = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5];
    const score = [0, 0, 0];
    
    // ๋ฐฐ์—ด answers๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ๋ฌธ์ œ๋ฅผ ๋งžํžŒ ํšŸ์ˆ˜๋ฅผ ๊ฐ๊ฐ ์ฑ„์ ํ•ด score์— ์ž…๋ ฅ
    for (let i = 0; i < answers.length; i++) {
        if (s1[i % s1.length] === answers[i]) {
            score[0]++;
        }
        if (s2[i % s2.length] === answers[i]) {
            score[1]++;
        }
        if (s3[i % s3.length] === answers[i]) {
            score[2]++;
        }
    }
    
    // ์ฑ„์  ๊ฒฐ๊ณผ, ๊ฐ€์žฅ ๋งŽ์€ ๋ฌธ์ œ๋ฅผ ๋งžํžŒ ์‚ฌ๋žŒ์„ ๋ฐฐ์—ด์— ๋‹ด์•„ return
    const max = Math.max(...score);
    for (let j = 0; j < score.length; j++) {
        if (score[j] === max) {
            answer.push(j + 1);
        }
    }
    
    return answer;
}

 

โ—  ๋ฐ˜๋ณต๋ฌธ์˜ i๋ฅผ ๊ฐ ๋ฐฐ์—ด์˜ ๊ธธ์ด๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๊ฐ€ answer ๋ฐฐ์—ด๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ score ๋ฐฐ์—ด์„ ์ฆ๊ฐ€์‹œํ‚ค๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ํ’€์ดํ•˜์˜€๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ตœ์ข…์ ์œผ๋กœ ์ตœ์ข…์ ์œผ๋กœ ๊ฐ€์žฅ ๋งŽ์€ ๋ฌธ์ œ๋ฅผ ๋งž์ถ˜ ์‚ฌ๋žŒ์„ score ๋ฐฐ์—ด์˜ index๋กœ answer ๋ฐฐ์—ด์— push ํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ๊ฐ’์„ ๊ตฌํ–ˆ๋‹ค. 

 

 

(3) ๋ฌธ์ œ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ํ’€์ง€ ๋ชปํ–ˆ๋˜ ์ด์œ 

 

โ—  ๋ฐฐ์—ด๋ณ„๋กœ ๊ฐ๊ธฐ ๋‹ค๋ฅธ ๋ฐ˜๋ณต๋ฌธ์œผ๋กœ ๋งž์€ ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•˜๋ ค๊ณ  ํ•˜์˜€๊ธฐ ๋•Œ๋ฌธ์— ํšจ์œจ์„ฑ ์ธก๋ฉด์—์„œ ๋ถ€์กฑํ•œ ์ ์ด ์žˆ์—ˆ๋‹ค. 

 

 

ํ•ด๊ฒฐ ๋ฐฉ์•ˆ

 

(1) ๋ฐ˜๋ณต๋ฌธ์˜ i ์™€  ๋ฐฐ์—ด์˜ ๊ธธ์ด๋ฅผ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๋กœ ํ•œ ๋ฒˆ์— ๋ฐฐ์—ด์˜ index ๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Œ์„ ๊ธฐ์–ตํ•˜๊ธฐ

 

(2) let score = [0, 0, 0]; ๊ณผ ๊ฐ™์ด index์˜ ๊ฐœ์ˆ˜๋ฅผ ๊ณ ์ •ํ•˜์—ฌ ์ƒ์„ฑํ•˜๋Š” ๋นˆ ๋ฐฐ์—ด ์ ๊ทน์ ์œผ๋กœ ํ™œ์šฉํ•˜๊ธฐ 

 

(3) Math.max ์— ๋Œ€ํ•œ ์ •ํ™•ํ•œ ์ดํ•ด 

 

  โ€ป Math.max

     - ์ž…๋ ฅ๊ฐ’์œผ๋กœ ๋ฐ›์€ 0๊ฐœ ์ด์ƒ์˜ ์ˆซ์ž ์ค‘ ๊ฐ€์žฅ ํฐ ์ˆซ์ž๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

// ๋ฐฐ์—ด ์„ ์–ธํ•˜์ง€ ์•Š๊ณ  ์ง์ ‘ ์ˆซ์ž ๋น„๊ต
console.log(Math.max(1, 3, 2)); // output: 3

// ๋ฐฐ์—ด ์„ ์–ธ ํ›„ ๋น„๊ต 
arr = [23, 24, 25];
console.log(Math.max(...arr)); // output: 25