[Python] 프로그래머스 lv1 - 모의고사
2023. 5. 20. 22:49ㆍ알고리즘/문제풀이
[Python] 프로그래머스 lv1 - 모의고사
코딩테스트 연습 - 모의고사 | 프로그래머스 스쿨 (programmers.co.kr)
문제설명
- 정리
- 가장 많이 맞춘 사람의 번호를 출력
- 도움 받은 정보
- 사람마다 지정받은 찍기 번호 리스트의 길이가 달라서 해당 경우에는 어떤 방식으로 인덱스를 지정해야 하나 고민
- 이때 주어진 정답의 리스트의 i를 사람의 정답 리스트의 길이로 나눠주면 번호가 지속적으로 반복된다는 점, 이를 통해 정답 체크 가능
- enumerate 사용으로 idx와 score 동시에 접근하기
- 의사 코드
- check_answer 생성
- 각 사람마다 정답이 맞았는지 체크
- 문제에서 요구하는 찍기 리스트와 정답의 갯수 파악을 위한 리스트 작성
- 반복문 실행, 정답지의 길이만큼 반복
- 이때 chekc_answer 실행
- 인덱스와 점수를 반복
- 만약 점수가 해당 right에서 가장 큰 수와 일치하면 리스트에 등록
- 이때 문제에서는 번호가 동일 시 오름차순으로 넣으라 했는데 이때 반복문을 통해 처음부터 진행하기에 해결
- check_answer 생성
풀이코드
def check_answer(answers, i, p, right, n):
if answers[i] == p[(i % len(p))]:
right[n] += 1
def solution(answers):
answer = []
p1 = [1, 2, 3, 4, 5]
p2 = [2, 1, 2, 3, 2, 4, 2, 5]
p3 = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5]
right = [0, 0, 0]
for i in range(len(answers)):
check_answer(answers, i, p1, right,0)
check_answer(answers, i, p2, right,1)
check_answer(answers, i, p3, right,2)
for idx, score in enumerate(right):
if score == max(right):
answer.append(idx + 1)
return answer
'알고리즘 > 문제풀이' 카테고리의 다른 글
[Python] 프로그래머스 lv1 - 로또 최고 순위와 최저 순위 (0) | 2023.12.26 |
---|---|
[Python] 프로그래머스 lv1 - 달리기 경주 (0) | 2023.12.26 |
[Python] 프로그래머스 lv1 - 콜라 문제 (1) | 2023.05.19 |
[Python] 프로그래머스 lv2 - 카펫 (0) | 2023.05.18 |
[Python] 프로그래머스 lv1 - 삼총사 (1) | 2023.01.26 |