プログラマー「模擬試験(42840回)」
問題の説明
https://programmers.co.kr/learn/courses/30/lessons/42840
数学は数学を放棄する人の略語である.「囚人3人組」は模擬試験で数学の問題を全部撮りたいと思っている.最初の問題から最後の問題まで、執胞子は以下の通りである.
1番捕手の撮り方:1,2,3,4,5,1,2,3,4,5...2番捕手の撮り方:2、1、2、3、2、4、2、5、2、2、3、2、4、2、5...3番捕手の撮り方:3,3,1,1,2,2,4,5,5,3,3,1,2,2,4,5,5...
最初の問題から最後の問題までの正解が順番に並んでいる場合は、最も多くの質問に答えた人が誰なのか、答えを並べて返すように解答関数を書いてください.
せいげんじょうけん
I/O例
I/O例説明
I/O例#1
I/O例#2
に答える
def solution(answers):
sols = [[1,2,3,4,5],[2,1,2,3,2,4,2,5],[3,3,1,1,2,2,4,4,5,5]]
answer = []
result = []
# 1,2,3번 순서로 채점
for sol in sols:
cnt = 0
for i in range(len(answers)):
# 정답지의 답과 찍은 패턴과 같을때 카운트
if answers[i] == sol[i%int(len(sol))]:
cnt += 1
answer.append(cnt)
# enumerate()는 해당 위치와 값을 리턴해줌
for num, score in enumerate(answer):
# 현재 점수가 최고 점수일 경우 결과리스트에 위치 값 넣어줌
if score == max(answer):
result.append(num+1)
return result
最高の草も持ってきました.私の場合は1、2、3回の場合は3回採点しますが、こちらの解答は1回で終わります.
def solution(answers):
pattern1 = [1,2,3,4,5]
pattern2 = [2,1,2,3,2,4,2,5]
pattern3 = [3,3,1,1,2,2,4,4,5,5]
score = [0, 0, 0]
result = []
# 정말 깔끔하게 푸신 것 같다👍
for idx, answer in enumerate(answers):
if answer == pattern1[idx%len(pattern1)]:
score[0] += 1
if answer == pattern2[idx%len(pattern2)]:
score[1] += 1
if answer == pattern3[idx%len(pattern3)]:
score[2] += 1
for idx, s in enumerate(score):
if s == max(score):
result.append(idx+1)
return result
enumerate()繰り返し文を使用する場合は、これが何回目の繰り返し文であるかを確認する必要があります.
この時点で使用します.
インデックス番号とコレクションの要素をtuple形式で返します.
ソース:https://wikidocs.net/16045
Reference
この問題について(プログラマー「模擬試験(42840回)」), 我々は、より多くの情報をここで見つけました https://velog.io/@chobae/프로그래머스-모의고사42840번テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol