반응형
단순하게 문제 조건대로 구현해서 풀었습니다.
repeat 이라는 2차원 배열에 문제에서 제시된 1번, 2번, 3번 학생의 반복 규칙을 넣어두고 chk 라는 함수를 만들어 각 학생별 점수를 확인하도록 했습니다. 학생별 점수를 res 배열에 넣어두고 가장 큰 점수를 구해 res에서 가장 큰 점수의 학생 번호를 answer 리스트에 추가한 뒤 리턴하도록 코드를 작성했습니다.
저는 chk 함수에서 idx == len(tmp) 라는 조건으로 학생의 반복 규칙을 회전하도록 구성했는데, 이 부분을 나머지 연산으로 대체한다면 각 학생별로 chk 함수를 돌릴 필요없이 for 문 한번으로 해결할 수 있겠습니다.
문제 풀이(파이썬)
def chk(idx, tmp, answers):
score = 0
for i in range(len(answers)):
if tmp[idx] == answers[i]:
score += 1
idx += 1
if idx == len(tmp):
idx = 0
return score
def solution(answers):
repeat = [[1, 2, 3, 4, 5], [2, 1, 2, 3, 2, 4, 2, 5], [3, 3, 1, 1, 2, 2, 4, 4, 5, 5]]
res = list()
for r in repeat:
res.append(chk(0, r, answers))
largest = max(res)
answer = list()
for i in range(len(res)):
if res[i] == largest:
answer.append(i+1)
return answer
반응형
'Algorithm' 카테고리의 다른 글
[프로그래머스] 스택/큐 - 기능 개발(파이썬 문제풀이) (0) | 2022.03.12 |
---|---|
[프로그래머스] 해시 - 베스트앨범(파이썬 문제풀이) (0) | 2021.04.02 |
[프로그래머스] 해시 - 완주하지 못한 선수(파이썬 문제풀이) (0) | 2021.03.31 |
[프로그래머스] DFS/BFS - 네트워크(파이썬 문제 풀이) (0) | 2021.03.18 |
[프로그래머스] DFS/BFS - 타겟 넘버(파이썬 문제 풀이) (0) | 2021.03.18 |
댓글