[プログラマー]完全ナビゲーション-シミュレーション試験(第1級)
3082 ワード
模擬試験
解法
i 1番目の答え(iは0から)=
1番小胞子:iを5で割った後+1
2番小胞子:iは偶数-2、iは奇数-iを2で割った分、さらに4で割った余数が0なら1は1、1は3、2は4、3は3、3は5
3番小胞子:iを2で割った商を5で割った残数が0であると、3、1が1、2が2、3が4、4が5
Python Code
def solution(answers):
answer = []
count = [0, 0, 0] #각 수포자들의 정답 개수 저장
for i in range(len(answers)):
student1 = i%5 + 1
if i%2 == 0: #i가 짝수
student2 = 2
else: #i가 홀수
temp = int(i/2) % 4
if temp == 0:
student2 = 1
elif temp == 1:
student2 = 3
elif temp == 2:
student2 = 4
else:
student2 = 5
temp = int(i/2) % 5
if temp == 0:
student3 = 3
elif temp == 1:
student3 = 1
elif temp == 2:
student3 = 2
elif temp == 3:
student3 = 4
else:
student3 = 5
if student1 == answers[i]:
count[0] += 1
if student2 == answers[i]:
count[1] += 1
if student3 == answers[i]:
count[2] += 1
max = -1
#정답 개수의 최대값 찾기
for i in range(len(count)):
if count[i] > max:
max = count[i]
answer.clear()
answer.append(i+1)
elif count[i] == max:
answer.append(i+1)
return answer
エラーと解決
初めて最大回答者を間違えたので正解率は50%です.
max = 0
for i in range(len(count)):
if count[i] >= max:
max = count[i]
answer.append(i+1)
答えの数が一番多い学生を追加するために、このように編集すると、一番値を更新するとき、前の一番値の学生が答えに残ります.したがって,答えが[2,1,2,3,2,4,2,5]の場合,答えは[1,2]となり,誤りが生じる.(元の答えは[2].max = -1
for i in range(len(count)):
if count[i] > max:
max = count[i]
answer.clear()
answer.append(i+1)
elif count[i] == max:
answer.append(i+1)
最値を更新するときは、答えを空にしてから追加し、数字と最値が同じときにすぐに答えに追加するように変更します.他人の解答
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]
このようにして,最初にパターンをリストに保存し,その後,各リストの長さを用いてインデックスを行い,各胞子の答えを得る解が多く,コードがより簡単になった.
最大正解者を求める場合、max関数を用いて最初から正解の最値を求め、キャッチャーの答えの個数を最値に等しくすると答えに加算する方法もありますが、これもコードが簡単です.
新知
他人の解答を見て、よく「枚挙」が出てくるので調べてみました.これまでfor文の変換にはrangeのみが書かれており、列挙を使用してインデックス番号とセット内の要素をtuple形式に戻すことができます.
a = [2, 1, 2, 3, 2, 4, 2, 5]
for b in enumerate(a):
print(b)
出力結果あるいは
a = [2, 1, 2, 3, 2, 4, 2, 5]
for i, v in enumerate(a):
print(i, v)
出力結果Reference
この問題について([プログラマー]完全ナビゲーション-シミュレーション試験(第1級)), 我々は、より多くの情報をここで見つけました https://velog.io/@imyo/프로그래머스-완전탐색-모의고사-Level-1テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol