005. 모의고사
문제
내 풀이(정답)
- 사실 온전히 내 풀이라고 볼 수 없다 나는 순환주기를 나눠준다는 사고를 하지 못했다ㅜㅜ
def solution(answers):
answer = []
fs = [1,2,3,4,5]
ss = [2,1,2,3,2,4,2,5]
ts = [3,3,1,1,2,2,4,4,5,5]
fs_score = 0
ss_score = 0
ts_score = 0
for number in range(len(answers)):
if answers[number] == fs[number%5]:
fs_score += 1
if answers[number] == ss[number%8]:
ss_score += 1
if answers[number] == ts[number%10]:
ts_score += 1
std_scores = [fs_score, ss_score, ts_score]
for i, score in enumerate(std_scores):
if score == max(std_scores):
answer.append(i+1)
return answer
enumerate 참고 : wikidocs
- 반복문 사용 시 몇 번째 반복문인지 확인이 필요할 수 있습니다. 이때 사용합니다.
- 인덱스 번호와 컬렉션의 원소를
tuple
형태로 반환합니다.
>>> t = [1, 5, 7, 33, 39, 52]
>>> for p in enumerate(t):
... print(p)
...
(0, 1)
(1, 5)
(2, 7)
(3, 33)
(4, 39)
(5, 52)
- tuple형태 반환을 이용하여 아래처럼 활용할 수 있습니다.
>>> for i, v in enumerate(t):
... print("index : {}, value: {}".format(i,v))
...
index : 0, value: 1
index : 1, value: 5
index : 2, value: 7
index : 3, value: 33
index : 4, value: 39
index : 5, value: 52
가장 높은 비율의 정답 풀이
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
- 애초에
score
리스트에 넣어놔서 코드를 간결하게 만드는 모습
Author And Source
이 문제에 관하여(005. 모의고사), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@hiyee-gj/005.-모의고사저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)