반응형

내일 프로그래머스에서 쏘카 개발자 채용 코딩테스트를 봐야해서

공부하고 있다.

 

근데 level 1은 생각보다 쉬운 것 같다.

 

어려운 알고리즘은 아닌 것 같고

일반적으로 생각할 수 있는 방법으로 잘 풀린다.

 

 

def solution(answers):
    
    supo1 = 0
    supo2 = 0
    supo3 = 0
    
    # 1번 수포자의 변수
    supo1_arr = [1,2,3,4,5]
    
    # 2번 수포자의 변수
    supo2_arr = [2,1,2,3,2,4,2,5]
    
    # 3번 수포자의 변수
    supo3_arr = [3,3,1,1,2,2,4,4,5,5]
    
    for i in range(len(answers)):
        # 1번 수포자의 채점
        if answers[i] == supo1_arr[i%5]:
            supo1 += 1
        
        # 2번 수포자의 채점
        if answers[i] == supo2_arr[i%8]:
            supo2 += 1
        
        # 3번 수포자의 채점
        if answers[i] == supo3_arr[i%10]:
            supo3 += 1
    
    # dict()으로 정렬해서 가장 큰 점수 가져오기
    max_value = {}
    max_value[1] = supo1
    max_value[2] = supo2
    max_value[3] = supo3
    
    # 정렬
    max_value = sorted(max_value.items(), key=f1, reverse=True)
    max_num = max_value[0][1]
    
    # 가장 큰 값과 값이 비슷하면 result 배열에 넣어줌
    result = []
        
    for i,v in max_value:
        if v == max_num:
            result.append(i)
    
    # result 반환
    return result
    
    
def f1(x):
    return x[1]

 

 

 

아래 사이트를 들어가면

어느정도 로직은 비슷한데,

다양한 python 내장 함수를 사용해서 훨씬 간결하게 짠 코드들이 많다.

열심히 노력해야겠다

 

https://programmers.co.kr/learn/courses/30/lessons/42840/solution_groups?language=python3

 

프로그래머스

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

programmers.co.kr

 

 

P.S 혹시 코딩테스트를 대비하고 공부하고 싶으신 분들을 위해 강의를 올리고 있습니다.(많은 참여 부탁드립니다~~)

 

https://www.youtube.com/channel/UCYYao-BSPaetw7N2GFFJ-Yw?view_as=subscriber

 

Henry Joo

 

www.youtube.com

 

반응형

+ Recent posts