3. 모의고사

2020. 9. 9. 15:44·알고리즘_코딩테스트/프로그래머스_Level1

 

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
'알고리즘_코딩테스트/프로그래머스_Level1' 카테고리의 다른 글
  • 5. K번째 수
  • 4. 체육복
  • 2. 완주하지 못한 선수
  • 1. 크레인 인형뽑기 게임
논곰
논곰
현재 2년 유목하고, 3년 이상 리테일 쪽에서 머신러닝 엔지니어로 잠시 정착 중인 AI 엔지니어입니다.
  • 논곰
    에이아이 유목민
    논곰
  • 전체
    오늘
    어제
    • 분류 전체보기 (200)
      • 기술 견문록 (22)
        • MLOps (8)
        • ProductServing (5)
        • 협업 툴 (3)
        • Error Collecting (2)
        • 컨퍼런스 (1)
        • 자격증 (1)
      • IT 견문록 (10)
        • 추가 학습 정리 (10)
      • 알고리즘_코딩테스트 (162)
        • 프로그래머스_Level1 (40)
        • 백준코딩테스트_단계별문제풀이 (14)
        • 이것이 코딩테스트다 (63)
        • 2021_알고리즘 스터디 (30일) (28)
        • 주간코딩 스터디 (주코스) (17)
      • 독서 견문록 (6)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    알고리즘스터디
    그래프이론
    dfs
    정렬
    python3
    다시보기
    구현
    프로그래머스
    이진탐색
    그리디
    dp
    이코테
    파이썬 3
    글또
    단계별문제풀이
    MLFlow
    백준
    부스트캠프_AITech3기
    알고리즘_스터디
    백트랙킹
    부스트캠프_AITech_3기
    U_stage
    mrc
    ODQA
    기술면접
    Level2_PStage
    Level2
    최단경로
    주간회고
    Level1
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
논곰
3. 모의고사
상단으로

티스토리툴바