국문과 유목민

3. 모의고사 본문

알고리즘_코딩테스트/프로그래머스_Level1

3. 모의고사

논곰 2020. 9. 9. 15:44

 

0. 문제

링크) https://programmers.co.kr/learn/courses/30/lessons/42840

 

코딩테스트 연습 - 모의고사

수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. 1번 수포자가 찍는 ��

programmers.co.kr

1. 알고리즘 계획

  1. 각 학생별로 '찍는 패턴'을 입력
  2. for문을 통해 각 '패턴'을 돈다. ( '패턴'의 길이가 다른 점을 어떻게 이용할 것인가?
    • '찍는 패턴'이 다른 점을 어떻게 사용할 것인지에 대해 '나머지 연산'을 하면 된다. 
    • # 이 부분은 인터넷에 도움을 받았다.
  3.  '맞춘 개수'를 확인할 수 있는 리스트를 만들어 각 리스트에 count를 증가시키면서 기록


2. 나의 코드


def solution(answers):
    answer = []
    student_1 = [1, 2, 3, 4, 5]
    student_2 = [2, 1, 2, 3, 2, 4, 2, 5]
    student_3 = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5]
    count = [0, 0, 0]
    
    for idx in range(len(answers)):
        if student_1[idx % len(student_1)] == answers[idx]:
            count[0] += 1
            
        if student_2[idx % len(student_2)] == answers[idx]:
            count[1] += 1
            
        if student_3[idx % len(student_3)] == answers[idx]:
            count[2] += 1
            
    max_num = max(count[0], count[1], count[2])
    
## 기존 for문을 이용한 코드
#     for x in range(len(count)):
#         if count[x] == max_num:
#             answer.append(x+1)

## 리스트 컴프리핸션을 이용해 리스트 제작
    answer = [i+1 for i, v in enumerate(count) if v == max_num]
            
    return count

3. 다른 사람의 코드

def solution(answers):
    p = [[1, 2, 3, 4, 5],
         [2, 1, 2, 3, 2, 4, 2, 5],
         [3, 3, 1, 1, 2, 2, 4, 4, 5, 5]]
    s = [0] * len(p)

    # 핵심코드
    for idx_1, a in enumerate(answers):
        for idx_2, v in enumerate(p):
            if a == v[idx1 % len(v)]:
                s[idx_2] += 1
                
    # 리스트 컴프리핸션
    return [i + 1 for i, v in enumerate(s) if v == max(s)]

- enumerate와 list comprehension을 이용해서 코드를 줄였다.

4. 정리 및 리뷰

- enumerate와 list comprehension의 편리성과 간결성에 대해서 알게됨

- 이후로 enuerate와 list Comprehension을 다른 코드에도 사용해보고자 생각함


코드 만족도: ★★☆

'알고리즘_코딩테스트 > 프로그래머스_Level1' 카테고리의 다른 글

6. 2016년  (0) 2020.09.09
5. K번째 수  (0) 2020.09.09
4. 체육복  (0) 2020.09.09
2. 완주하지 못한 선수  (0) 2020.09.09
1. 크레인 인형뽑기 게임  (0) 2020.09.09
Comments