티스토리 뷰
<programmers.co.kr에 있는 문제입니다> 출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges
모의고사 관련된 코드 테스트입니다.
채택이 된 것입니다. 다른 사람 풀이는 원래 보지 않는 편이라 그냥 제 마음대로 코드를 작성했습니다.
마크다운 셀에 설명을 넣었으니 참조하셔서 보십시요.
그리고 도움될만한 조언은 남겨주시면 학습에 많은 도움이 될 것 같습니다.
출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges
programmers.co.kr 코딩 테스트¶
문제 설명¶
수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 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하는 값을 오름차순 정렬해주세요.
입출력 예
answers return
[1,2,3,4,5] [1]
[1,3,2,4,2] [1,2,3]
입출력 예 설명
입출력 예 #1
수포자 1은 모든 문제를 맞혔습니다.
수포자 2는 모든 문제를 틀렸습니다.
수포자 3은 모든 문제를 틀렸습니다.
따라서 가장 문제를 많이 맞힌 사람은 수포자 1입니다.
입출력 예 #2
- 모든 사람이 2문제씩을 맞췄습니다.
알고리즘¶
수포자 1을 기준으로 맞힌 답의 개수를 계산
- 수포자 1의 답 체크를 리스트로 작성 : 반복되는 수를 확인
- 문항 수를 수포자 1의 반복되는 수로 나누고 나머지 계산
- 전달되는 인자(answers)와 비교하여 맞힌 문제 세기
수포자 2와 3도 같은 방법으로 맞힌 문제수 파악
- 가장 많이 맞힌 수포자를 리턴
mem_01(answers) 함수¶
- len(answers) : 전체 문제 수
- 수포자 1이 제출한 답안(반복되는 문항만 리스트)과 항목별로 비교하여 맞힌 문항수를 계산가능
- 수포자 1이 제출한 전체 답안 만들기 : len(answers) 개수만큼 만들기
- a : 수포자 1이 제출한 전체 답안
np.equal(answers, a) : 리스트 answers와 리스트 a의 항목별 비교
- 같으면 True
- 다르면 False
sum(np.equal(answers, a) : True 의 개수를 계산
import numpy as np
def mem_01(answers):
answer_01 = [1, 2, 3, 4, 5]
qu_01 = len(answers) // len(answer_01)
re_01 = len(answers) % len(answer_01)
a = answer_01 * qu_01 + answer_01[:re_01]
return sum(np.equal(answers, a))
print(mem_01([1, 2, 3, 4, 5, 1, 3, 2]))
제출된 코드입니다¶
def solution(answers):
import numpy as np
answer = []
tmp = []
ans = [[1, 2, 3, 4, 5],
[2, 1, 2, 3, 2, 4, 2, 5],
[3, 3, 1, 1, 2, 2, 4, 4, 5, 5]]
for i in range(3):
qu = len(answers) // len(ans[i])
re = len(answers) % len(ans[i])
a = ans[i]*qu + ans[i][:re]
corr = sum(np.equal(answers, a))
tmp.append(corr)
for i in range(3):
if tmp[i] == max(tmp):
answer.append(i+1)
return answer
print(solution([1, 2, 2, 2, 1, 5, 3, 1, 4, 1, 3, 2]))
a = [1, 2, 3, 2, 5, 4, 5]
print(max(a))
'pythonCode > programmers' 카테고리의 다른 글
210705 지워진 로또_프로그래머스 (0) | 2021.07.05 |
---|---|
210704_짝수와 홀수_프로그래머스 (0) | 2021.07.04 |
210704_체육복_프로그래머스 (0) | 2021.07.04 |
210701_내적구하기_프로그래머스 (0) | 2021.07.01 |
210701_소수만들기_프로그래머스 (1) | 2021.07.01 |
- Total
- Today
- Yesterday
- 미분계수
- Python
- checkpoint
- AI_고교수학
- 도함수
- LangChain
- 텐서플로우
- RAG
- Chatbot
- programmers.co.kr
- programmers
- 랭체인
- multi modal
- 변화율
- streamlit
- TensorFlow
- 고등학교 수학
- 파이썬
- 미분
- GPT
- 약수
- 로피탈정리
- 프로그래머스
- 미분법
- image depict
- FewShot
- ChatGPT
- prompt
- 챗봇
- LLM
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |