아이공의 AI 공부 도전기

[프로그래머스]  Level 1 : 모의고사 (Python)

 

     

 

 

https://school.programmers.co.kr/learn/courses/30/lessons/42840

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

코드 링크

https://github.com/stellaluminary/Programmers

 

GitHub - stellaluminary/Programmers

Contribute to stellaluminary/Programmers development by creating an account on GitHub.

github.com

Python

 

방법 1 

 

def solution(answers):
    answer = []

    n1_pattern = [1, 2, 3, 4, 5]
    n2_pattern = [2, 1, 2, 3, 2, 4, 2, 5]
    n3_pattern = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5]

    n1, n2, n3 = [], [], []
    for i in range(len(answers)):
        n1.append(n1_pattern[i % len(n1_pattern)])
        n2.append(n2_pattern[i % len(n2_pattern)])
        n3.append(n3_pattern[i % len(n3_pattern)])

    d = {1: 0, 2: 0, 3: 0}

    for e, ans in enumerate(answers):
        if ans == n1[e]:
            d[1] += 1
        if ans == n2[e]:
            d[2] += 1
        if ans == n3[e]:
            d[3] += 1

    M = 0
    for k, v in d.items():
        if v > M:
            answer = [k]
            M = v
        elif v == M:
            answer.append(k)

    return answer

 

 

 

방법 2 

 

def solution(answers):
    answer = []
    n1_pattern = [1, 2, 3, 4, 5]
    n2_pattern = [2, 1, 2, 3, 2, 4, 2, 5]
    n3_pattern = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5]
    score = [0, 0, 0]

    for e, ans in enumerate(answers):
        if ans == n1_pattern[e % len(n1_pattern)]:
            score[0] += 1
        if ans == n2_pattern[e % len(n2_pattern)]:
            score[1] += 1
        if ans == n3_pattern[e % len(n3_pattern)]:
            score[2] += 1

    for idx, v in enumerate(score):
        if v == max(score):
            answer.append(idx + 1)

    return answer

 

방법 3 

def solution(answers):
    pattern = [[1, 2, 3, 4, 5],
               [2, 1, 2, 3, 2, 4, 2, 5],
               [3, 3, 1, 1, 2, 2, 4, 4, 5, 5]]
    score = [0, 0, 0]

    for e, ans in enumerate(answers):
        for i, v in enumerate(pattern):
            if ans == v[e % len(v)]:
                score[i] += 1

    return [i + 1 for i, v in enumerate(score) if v == max(score)]

 

 

공유하기

facebook twitter kakaoTalk kakaostory naver band
loading