[3코1파] #07. Lv1 모의고사

gunny·2023년 1월 10일
0

코딩테스트

목록 보기
7/530

3명의 안드로이드 개발자와 1명의 파이썬 개발자의 코딩 테스트 서막 : 3코1파

Rule :

하루에 1문제씩 풀기.
한 문제당 30분씩은 고민하기.
왜 그렇게 풀었는지 공유하기.
하루라도 놓친다면 벌금은 1,000원

START :

2023.01.04~

Today :

2023.01.10 [7일차]

프로그래머스 LV1.
모의고사
(완전탐색 문제)
https://school.programmers.co.kr/learn/courses/30/lessons/42840

문제 요약
수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 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하는 값을 오름차순 정렬해주세요.

입출력 예

입출력 예 설명

입출력 예 #1

수포자 1은 모든 문제를 맞혔습니다.
수포자 2는 모든 문제를 틀렸습니다.
수포자 3은 모든 문제를 틀렸습니다.
따라서 가장 문제를 많이 맞힌 사람은 수포자 1입니다.

입출력 예 #2

모든 사람이 2문제씩을 맞췄습니다.

문제 풀이 방법
- 일단 나는 딕셔너리 괴물,, 무조건 일단 쓰고 보는거 enumerate와 dictionary ㅋㅎ
제한 사항에서 answers가 10,000 이라는 것 그리고, 처음에 1,2,3명의 리스트 길이가 10,000으로 맞아 떨어진다는 것을 보고 두개를 잘 핸들링 해봐야 한다고 생각해서 10,000으로 리스트 길이 배열을 맞춤

  • 그 뒤에 인덱스를 활용해서 맞은 개수만큼 correct_dic 으로 dictionary를 생성하고, 딕셔너리에서의 max를 비교해서 return 하도록 풀었음

코드 공유

def solution(answers):
    answer = []
    
    a = [1,2,3,4,5] * 2000
    b = [2,1,2,3,2,4,2,5] * 1250
    c = [3,3,1,1,2,2,4,4,5,5] *1000
    
    correct_dic = {1:0, 2:0, 3:0}
    
    for idx, ans in enumerate(answers):
        if answers[idx] == a[idx] : correct_dic[1]+=1
        if answers[idx] == b[idx] : correct_dic[2]+=1
        if answers[idx] == c[idx] : correct_dic[3]+=1

    high = max(answer_dic.values())
    for k,v in answer_dic.items():
        if v >=high:
            answer.append(k)
                  
    
    return answer

증빙

다른 사람 풀이

제일 베스트

내 방식대로 짜면.. 남의 코드 잘안보임.. 조졌다

다른 사람 풀이 중에 내가 수작업으로 했던 1250, 2000, *1000 이짓거리를
itertools의 cycle 함수를 활용해서 한 사람이 있었으니?
오케이 cycle 함수 너 압수~

cycle 함수 문닫고 맹연습

여담

수포자들은 누군가에 피해를 줍니다 반드시..

profile
꿈꾸는 것도 개발처럼 깊게

0개의 댓글