ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Programmers] ๋ชจ์˜๊ณ ์‚ฌ
    TECH/Algorithm 2022. 1. 8. 23:19

     

    ๋ฌธ์ œ ์„ค๋ช…

     

    ์ˆ˜ํฌ์ž๋Š” ์ˆ˜ํ•™์„ ํฌ๊ธฐํ•œ ์‚ฌ๋žŒ์˜ ์ค€๋ง์ž…๋‹ˆ๋‹ค. ์ˆ˜ํฌ์ž ์‚ผ์ธ๋ฐฉ์€ ๋ชจ์˜๊ณ ์‚ฌ์— ์ˆ˜ํ•™ ๋ฌธ์ œ๋ฅผ ์ „๋ถ€ ์ฐ์œผ๋ ค ํ•ฉ๋‹ˆ๋‹ค. ์ˆ˜ํฌ์ž๋Š” 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ํ•˜๋Š” ๊ฐ’์„ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌํ•ด์ฃผ์„ธ์š”.

    Python

    def solution(answers):
        answer = []
        score = [0,0,0]
    
        person1 = ([1, 2, 3, 4, 5]*len(answers))[:len(answers)]
        person2 = ([2, 1, 2, 3, 2, 4, 2, 5]*len(answers))[:len(answers)]
        person3 = ([3, 3, 1, 1, 2, 2, 4, 4, 5, 5]*len(answers))[:len(answers)]
    
    
        for i in range(len(answers)):
            if answers[i] == person1[i]:
                score[0] += 1
            if answers[i] == person2[i]:
                score[1] += 1
            if answers[i] == person3[i]:
                score[2] += 1
    
        for i in range(3):
            if score[i] == max(score):
                answer.append(i+1)
    
    
        return answer

    ์ฝ”๋“œ๋ฅผ ์กฐ๊ธˆ ๋” ์ค„์ผ ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™์€๋ฐ, ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์˜ ํ’€์ด๋ฅผ ๋ณด๋‹ˆ enumarate๋ฅผ ๋งŽ์ด ์“ฐ๋”๋ผ. ์‚ฌ์šฉํ•ด ๋ณด๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค.

     

     

    def solution(answers):
        answer = []
        score = [0,0,0]
        patterns = [[1, 2, 3, 4, 5], 
                    [2, 1, 2, 3, 2, 4, 2, 5], 
                    [3, 3, 1, 1, 2, 2, 4, 4, 5, 5]]
        
        for idx, num in enumerate(answers):
            if num == patterns[0][idx % len(patterns[0])]:
                score[0] += 1
            if num == patterns[1][idx % len(patterns[1])]:
                score[1] += 1
            if num == patterns[2][idx % len(patterns[2])]:
                score[2] += 1
        
        for i in range(3):
            if score[i] == max(score):
                answer.append(i+1)
                
        
        return answer

    1. answers๊ณผ ์ˆ˜ํฌ์ž๋“ค์˜ ๋‹ต์„ ๋งž์ถฐ ๋ณด๋Š” ๊ณผ์ •์—์„œ, % ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ˆ˜ํฌ์ž๋“ค์˜ ์ •๋‹ต ํŒจํ„ด ์•ˆ์—์„œ ๋‹ต์„ ๋งž์ถœ ์ˆ˜ ์žˆ๊ณ , ๋”ฐ๋ผ์„œ ์ผ์ผ์ด answers์˜ ๊ฐœ์ˆ˜๋งŒํผ ์ƒˆ๋กœ์šด ์ •๋‹ต ๋ฐฐ์—ด์„ ๋งŒ๋“ค์ง€ ์•Š์•„๋„ ๋œ๋‹ค.

    2. max()๋Š” list์— ์ ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

    3. enumerate()๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ index์™€ value๋ฅผ ํ•œ ๋ฒˆ์— ๊บผ๋‚ผ ์ˆ˜ ์žˆ๋‹ค.


     

    JavaScript

    function solution(answers) {
        var answer = [];
        let score = [0,0,0];
        const patterns = [[1, 2, 3, 4, 5], 
                    [2, 1, 2, 3, 2, 4, 2, 5], 
                    [3, 3, 1, 1, 2, 2, 4, 4, 5, 5]];
        
        answers.forEach((num, idx) => {
            if (num === patterns[0][idx % patterns[0].length]) { score[0] += 1; }
            if (num === patterns[1][idx % patterns[1].length]) { score[1] += 1; }
            if (num === patterns[2][idx % patterns[2].length]) { score[2] += 1; }
        })
        
        for (let i = 0; i < score.length; i++) {
            if (score[i] === Math.max(...score)){answer.push(i+1)}
        }
            
        
        return answer;
    }

    python๊ณผ ๋น„์Šทํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ JavaScript๋กœ ํ’€์–ด ๋ณด์•˜๋‹ค.

    1. Array Method๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ ์•„์ง ์„œํˆฐ ๊ฒƒ ๊ฐ™๊ธฐ๋„....... ํ’€์ด๋ฅผ ๋ณด๋‹ˆ filter๋ฅผ ์“ด ์‚ฌ๋žŒ๋„ ์žˆ๋˜๋ฐ, ์‚ฌ์šฉ๋ฒ•์— ๋Œ€ํ•ด ๋” ๊ณต๋ถ€ํ•ด์•ผ ํ•  ๊ฒƒ ๊ฐ™๋‹ค.

    2. max() ์‚ฌ์šฉํ•  ๋•Œ ๋ฐฐ์—ด์„ ์ง์ ‘ ๋„ฃ์œผ๋ ค๋ฉด max(score)๊ฐ€ ์•„๋‹Œ max(...score)์™€ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์œ ๋…ํ•˜๊ธฐ.

    ๋Œ“๊ธ€

Designed by Tistory.