[프로그래머스] 모의고사 - 파이썬(Python)

2021. 4. 19. 23:03· 알고리즘/문제풀이
목차
  1. 문제 설명
  2. 입출력 예
  3. 입출력 예 설명
  4. 나의 풀이
  5. 코드 설명
728x90

문제 설명

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

입출력 예

answer return
[1,2,3,4,5] [1]
[1,3,2,4,2] [1,2,3]

입출력 예 설명

입출력 예 #1

  • 수포자 1은 모든 문제를 맞혔습니다.
  • 수포자 2는 모든 문제를 틀렸습니다.
  • 수포자 3은 모든 문제를 틀렸습니다.

따라서 가장 문제를 많이 맞힌 사람은 수포자 1입니다.

 

입출력 예 #2

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

나의 풀이

def solution(answers):
	pattern1 = [1, 2, 3, 4, 5]
    pattern2 = [2, 1, 2, 3, 2, 4, 2, 5]
    pattern3 = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5]
    cnt = [0, 0, 0]
    result = []
    
	for idx, answer in enumerate(answers):
    	if answer == pattern1[idx%len(pattern1)]:
        	cnt[0] += 1
        
        if answer == pattern2[idx%len(pattern2)]:
        	cnt[1] += 1
        
        if answer == pattern3[idx%len(pattern3)]:
        	cnt[2] += 1
            
	for idx, c in enumerate(cnt):
    	if c == max(cnt):
        	result.append(idx+1)
	
    return sorted(result)

코드 설명

완전탐색을 통해 모든 경우의 수를 따져 보며 답을 구할 수 있는 문제이다.

 

중요한 부분은 if answer == pattern1[idx%len(pattern1)] 이다.

 

pattern의 길이가 모두 다르기 때문에, 각 pattern이 계속 돌아가게 하기 위해서는 인덱스 값으로 idx%len(pattern) 을 넣어준다.

 

이렇게 되면 각 패턴의 길이를 초과하는 idx가 들어올 때마다, 해당 값은 다시 0부터 시작하게 된다.

저작자표시

'알고리즘 > 문제풀이' 카테고리의 다른 글

[백준] 11724번 연결 요소의 개수 - 파이썬(Python)  (0) 2021.04.20
[백준] 1697번 숨바꼭질 - 파이썬(Python)  (0) 2021.04.20
[프로그래머스] 다리를 지나는 트럭 - 파이썬 (Python)  (0) 2021.04.06
[프로그래머스] 기능개발 - 파이썬(Python)  (0) 2021.02.19
[백준] 7576번 토마토 - 파이썬(Python)  (0) 2021.02.07
  1. 문제 설명
  2. 입출력 예
  3. 입출력 예 설명
  4. 나의 풀이
  5. 코드 설명
'알고리즘/문제풀이' 카테고리의 다른 글
  • [백준] 11724번 연결 요소의 개수 - 파이썬(Python)
  • [백준] 1697번 숨바꼭질 - 파이썬(Python)
  • [프로그래머스] 다리를 지나는 트럭 - 파이썬 (Python)
  • [프로그래머스] 기능개발 - 파이썬(Python)
SeongOnion
SeongOnion
서버는 꺼지지 않아요
조무래기 코딩서버는 꺼지지 않아요
SeongOnion
조무래기 코딩
SeongOnion
전체
오늘
어제
  • 분류 전체보기 (161)
    • 알고리즘 (81)
      • 이론 (8)
      • 문제풀이 (73)
    • 언어 (15)
      • Python (9)
      • JavaScript (1)
      • JAVA (5)
    • 데이터베이스 (5)
    • 프레임워크 (15)
      • Django (7)
      • Spring (8)
    • 그 외 공부 (35)
      • 운영체제 (1)
      • 자료구조 (14)
      • 네트워크 (5)
      • CS (2)
      • 기타 (5)
      • 트러블 슈팅 (8)
    • 프로젝트 (0)
    • 개발자취 (8)
    • 회고 (0)
    • 주저리주저리 (1)
    • 기타 (비개발) (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • DRF
  • BFS/DFS
  • 데이터베이스
  • 정렬 알고리즘
  • Django
  • 투 포인터 알고리즘
  • 오픈소스
  • 프로그래머스
  • BFS
  • 코딩
  • 트러블 슈팅
  • 그리디알고리즘
  • DP
  • 에라토스테네스의 체
  • 코딩테스트
  • 개발자
  • 소수
  • 장고
  • 알고리즘
  • 스택
  • 브루트포스
  • 회고
  • 자바
  • 웹
  • 컨트리뷰트
  • 백준
  • 큐
  • 이진탐색
  • 파이썬
  • spring

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
SeongOnion
[프로그래머스] 모의고사 - 파이썬(Python)
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.