본문 바로가기
프로그래머스/Python

[프로그래머스] 모의고사 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트

by 우당탕탕 개발자 2023. 7. 24.
728x90
반응형

 

 

프로그래머스

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

programmers.co.kr

 

1. 문제 설명

2. 풀이과정

  1. 수포자마다 찍는 규칙을 리스트로 저장해 둔다. people1 = [1, 2, 3, 4, 5]  people2 = [2, 1, 2, 3, 2, 4, 2, 5]  people3 = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5]
  2. 수포자마다 정답을 맞힌 횟수를 저장할 변수를 생성하고 초기화한다. count1 = 0  count2 = 0  count3 = 0
  3. 입력받은 문제의 정답을 인덱스를 활용해 하나씩 추출한다. for i in range(len(answers))
  4. 만약 첫 번째 수포자의 답과 추출한 답이 일치하면 if (people1[i - len(people1) * (i // len(people1))] == answers[i])
  5. 첫 번째 수포자의 정답 횟수를 1 증가시킨다. count1 += 1
  6. 만약 두 번째 수포자의 답과 추출한 답이 일치하면 if (people2[i - len(people2) * (i // len(people2))] == answers[i])
  7. 두 번째 수포자의 정답 횟수를 1 증가시킨다. count2 += 1
  8. 만약 세 번째 수포자의 답과 추출한 답이 일치하면 if (people3[i - len(people3) * (i // len(people3))] == answers[i])
  9. 세 번째 수포자의 정답 횟수를 1 증가시킨다. count3 += 1
  10. 세 수포자의 정답 횟수 중 최댓값을 구하고 첫 번째 수포자의 정답 횟수와 일치하면 첫 번째 수포자를 정답에 추가한다.  if (count1 == max(count1, count2, count3)): answer.append(1)
  11. 세 수포자의 정답 횟수 중 최댓값을 구하고 두 번째 수포자의 정답 횟수와 일치하면 두 번째 수포자를 정답에 추가한다.  if (count2 == max(count1, count2, count3)): answer.append(2)
  12. 세 수포자의 정답 횟수 중 최댓값을 구하고 세 번째 수포자의 정답 횟수와 일치하면 세 번째 수포자를 정답에 추가한다.  if (count3 == max(count1, count2, count3)): answer.append(3)
반응형

3. 소스코드

def solution(answers):
    answer = []
    
    people1 = [1, 2, 3, 4, 5]
    people2 = [2, 1, 2, 3, 2, 4, 2, 5]
    people3 = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5]
    
    count1 = 0
    count2 = 0
    count3 = 0
    for i in range(len(answers)):
        if (people1[i - len(people1) * (i // len(people1))] == answers[i]):
                count1 += 1
        if (people2[i - len(people2) * (i // len(people2))] == answers[i]):
                count2 += 1
        if (people3[i - len(people3) * (i // len(people3))] == answers[i]):
                count3 += 1
            
    if (count1 == max(count1, count2, count3)):
        answer.append(1)
    if (count2 == max(count1, count2, count3)):
        answer.append(2)
    if (count3 == max(count1, count2, count3)):
        answer.append(3)
        
    return answer
728x90
반응형