일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- KT AIVLE
- 에트리 인턴
- 시계열
- 서평
- r
- python
- Ai
- SQL
- 프로그래머스
- 머신러닝
- 소셜네트워크분석
- ML
- 빅분기
- kaggle
- 하계인턴
- hadoop
- 하둡
- 딥러닝
- dx
- 한국전자통신연구원 인턴
- arima
- 시각화
- KT 에이블스쿨
- cnn
- 에이블러
- 기계학습
- 지도학습
- matplot
- 다변량분석
- Eda
- 에이블스쿨
- httr
- 빅데이터분석기사
- 가나다영
- ETRI
- 웹크롤링
- ggplot2
- SQLD
- 한국전자통신연구원
- kt aivle school
Archives
- Today
- Total
소품집
[python] 프로그래머스 Lve1. 수포자 본문
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하는 값을 오름차순으로 정렬해주세요.
def solution(answers) :
# 1~3번 학생의 답안지
student_answers = []
student_answers.append([1,2,3,4,5]) # 1번 학생
student_answers.append([2,1,2,3,2,4,2,5]) # 2번 학생
student_answers.append([3,3,1,1,2,2,4,4,5,5]) # 3번 학생
# 1~3번 학생의 정답 개수
count = [0,0,0] # format
# 각 학생에 대해서, 하나씩 정답을 확인하며 맞춘 개수를 카운트
for i in range(3):
for j in range(len(answers)) :
# 각 문제의 번호를 학생의 답안지의 길이로 나눈 나머지를 인덱스로 이용
if student_answers[i][j%len(student_answers[i])] == answers[j]:
count[i] += 1
# 가장 많이 맞춘 학생들의 번호를 반환
answers = []
for i in range(3) :
if count[i] == max(count):
answer.append(i + 1)
return answer
def solution(answers):
scores = [0, 0, 0]
answer = []
# 학생들의 답안 패턴 (규칙적임)
pattern1 = range(1, 6)
pattern2 = [2, 1, 2, 3, 2, 4, 2, 5]
pattern3 = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5]
# 학생들이 정답을 맞출 때 스코어 + 1
for i in range(len(answers)):
if answers[i] == pattern1[i % len(pattern1)]:
scores[0] += 1
if answers[i] == pattern2[i % len(pattern2)]:
scores[1] += 1
if answers[i] == pattern3[i % len(pattern3)]:
scores[2] += 1
# 최대 점수를 얻은 학생
max_score = max(scores)
for i in range(3):
if scores[i] == max_score:
answer.append(i + 1)
return answer
source code
728x90
'코딩 테스트 > Python' 카테고리의 다른 글
[python] 프로그래머스 Lve1. 같은 숫자는 싫어 (0) | 2020.10.07 |
---|---|
[python] 프로그래머스 Lve1. 핸드폰 번호 가리기📱 (0) | 2020.10.06 |
[python] 프로그래머스 Lve1. 📢 서울에서 김서방 찾기 (0) | 2020.10.06 |
[python] 프로그래머스 Lve1. 문자열 내림차순으로 배치하기 및 sort와 sorted의 차이 (0) | 2020.10.06 |
[python] 프로그래머스 Lve1. 수박수박수박..🍉 (0) | 2020.10.06 |
Comments