アナログ「プログラマー」|完全ナビゲーション|Python
問題の説明
数学は数学を放棄する人の略語である.「囚人3人組」は模擬試験で数学の問題を全部撮りたいと思っている.最初の問題から最後の問題まで、執胞子は以下の通りである.
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, ...
最初の問題から最後の問題までの正解が順番に並んでいる場合は、最も多くの質問に答えた人が誰なのか、答えを並べて返すように解答関数を書いてください.せいげんじょうけん
試験には最大10000問が含まれている.
質問の答えは1 2 3 4 5のうちの1つです.
点数が一番高い人が何人かいる場合は、戻った値を昇順に並べてください.
I/O例
例回答:1[1,2,3,4,5][1]#2[1,3,2,4,2][1,2,3]
I/O例説明
I/O例1バブル1はすべての質問に答えた.逮捕者2はすべての問題を間違えた.逮捕者3はすべての問題を間違えた.だから一番多くの質問に答えた人は水泡子です.
I/O例#2各人が2問正解しました.
1.解答
def solution(answers):
supo1 = [1, 2, 3, 4, 5]
supo2 = [2, 1, 2, 3, 2, 4, 2, 5]
supo3 = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5]
score = [0, 0, 0] # 각 수포자의 정답 수
answer = []
# 입력 답안을 바탕으로 각 수포자의 정답 수를 반복문 돌림
for i in range(len(answers)):
if answers[i] == supo1[i % len(supo1)]: # 여기서 뒤의 숫자는 수포자의 정답이 반복되는 주기
score[0] += 1
if answers[i] == supo2[i % len(supo2)]:
score[1] += 1
if answers[i] == supo3[i % len(supo3)]:
score[2] += 1
winner = max(score) # 가장 많이 맞춘 수
for i in range(len(score)):
if winner == score[i]:
answer.append(i + 1) # 인덱스이기 때문에 append할때는 + 1
return answer
print(solution([4, 5, 3, 4, 2, 2, 3, 1, 5, 2, 1, 3, 4])) # 결과 [3]
print(solution([1, 2, 3, 4, 5])) # 결과 [1]
print(solution([1, 3, 2, 4, 2])) # 결과 [1,2,3]
2.列挙関数の使用def solution2(answers):
supo = [[1, 2, 3, 4, 5],
[2, 1, 2, 3, 2, 4, 2, 5],
[3, 3, 1, 1, 2, 2, 4, 4, 5, 5]]
score = [0] * len(supo)
answer = []
for i in range(len(supo)):
for j in range(len(answers)):
n = len(supo[i])
if answers[j] == supo[i][j%n]:
score[i] += 1
for idx, max_score in enumerate(score):
if max_score == max(score):
answer.append(idx+1)
return answer
print(solution2([4, 5, 3, 4, 2, 2, 3, 1, 5, 2, 1, 3, 4]))
print(solution2([1, 2, 3, 4, 5]))
print(solution2([1, 3, 2, 4, 2]))
Reference
この問題について(アナログ「プログラマー」|完全ナビゲーション|Python), 我々は、より多くの情報をここで見つけました https://velog.io/@fore0919/프로그래머스-모의고사-완전-탐색-Pythonテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol