[5/24] 모의고사
내 코드
def solution(answers):
one = [1, 2, 3, 4, 5] * 2000
two = [2, 1, 2, 3, 2, 4, 2, 5] * 1250
three = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5] * 1000
result = [0, 0, 0, 0]
for i in range(len(answers)):
if (one[i] == answers[i]):
result[1] += 1
if (two[i] == answers[i]):
result[2] += 1
if (three[i] == answers[i]):
result[3] += 1
m = max(result)
arr = []
for i in range(4):
if (result[i] == m):
arr.append(i)
return arr
풀이
- 각 배열을 10000개만큼 늘려준다.
- for문을 사용해서 각 배열과 answers를 비교하고, 일치하는 값을 가진 사람에게 1씩 증가시켜준다.
- max 값을 구한다. (바로 max 인덱스를 추출하지 않은 것은, max 함수는 하나만 반환하기 때문에 동점자를 모두 추출할 수 없다)
- max 값을 가진 index를 정답 배열에 추가한다.
효율적인 코드
def solution(answers):
one = [1, 2, 3, 4, 5]
two = [2, 1, 2, 3, 2, 4, 2, 5]
three = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5]
result = [0, 0, 0]
arr = []
for idx, answer in enumerate(answers):
if (answer == one[idx%len(one)]):
result[0] += 1
if (answer == two[idx%len(two)]):
result[1] += 1
if (answer == three[idx%len(three)]):
result[2] += 1
for idx, order in enumerate(result):
if (order == max(result)):
arr.append(idx+1)
return arr
피드백
- 마지막에 정답 리스트에 추가하는 부분은 비슷한데, max(result)를 변수에 저장할 필요 없이 for문에서 바로 비교하면 된다.
- 각 수포자의 리스트를 10000까지 만들 필요 없이, 비교하는 for문에서 인덱스를 나머지로 쓰면 된다.
- enumerate() 함수를 사용하면 조금 더 for문을 간결하게 사용할 수 있다.
- 배열을 내가 직접 만들어야 할 줄 알고 몇시간동안 끙끙거리며 만들었는데, 그냥 있는거 쓰면 됐었다...
삽집한 코드
#1번 수포자
one = []
for i in range(1, n+1):
if (i % 5 == 1):
one.append(1)
elif (i % 5 == 2):
one.append(2)
elif (i % 5 == 3):
one.append(3)
elif (i % 5 == 4):
one.append(4)
elif (i % 5 == 0):
one.append(5)
#2번 수포자
two = []
for i in range(1, n+1):
if (i % 2 != 0):
two.append(2)
else:
two.append(one[int(i/2)-1])
#3번 수포자
three = []
for i in range(1, n+1):
if (i % 5 == 1):
three.append(3)
three.append(3)
elif (i % 5 == 2):
three.append(1)
three.append(1)
elif (i % 5 == 3):
three.append(2)
three.append(2)
elif (i % 5 == 4):
three.append(4)
three.append(4)
elif (i % 5 == 0):
three.append(5)
three.append(5)
three = three[:n]
배운 것
- enumerate(리스트) : 인덱스와 원소로 이루어진 튜플을 만들어 준다. 각각 찢어서 쓰기 위해서는 다음과 같이 for문 안에 인덱스와 원소를 적어줘야 한다.
ex) for idx, answer in enumerate(answers)
Author And Source
이 문제에 관하여([5/24] 모의고사), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@kj313903/524-모2저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)