[완전탐색]모의고사 - enumerate 설명 및 사용
반응형
문제 설명
수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다.
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, ...
1번 문제부터 마지막 문제까지의 정답이 순서대로 들은 배열 answers가 주어졌을 때, 가장 많은 문제를 맞힌 사람이 누구인지 배열에 담아 return 하도록 solution 함수를 작성해주세요.
제한 조건
- 시험은 최대 10,000 문제로 구성되어있습니다.
- 문제의 정답은 1, 2, 3, 4, 5중 하나입니다.
- 가장 높은 점수를 받은 사람이 여럿일 경우, return하는 값을 오름차순 정렬해주세요.
입출력 예
answers | return | 입출력 예 설명 |
[1,2,3,4,5] | [1] |
|
[1,3,2,4,2] | [1,2,3] |
|
💻 Python(파이썬)
- 처음 한 풀이
def solution(answers):
arr = [[1,2,3,4,5],[2,1,2,3,2,4,2,5],[3,3,1,1,2,2,4,4,5,5]]
#수포자 별 맞는 문제 수
result=[0,0,0]
for i in range(3):
#맞는지 확인을 하기 위해
for j in range(len(answers)):
#문제 수가 반복되는 수보다 많은 경우
k =j%len(arr[i])
#맞았을 경우
if answers[j]==arr[i][k]:
result[i]=result[i]+1
return [i+1 for i in range(3) if result[i]==max(result)]
*enumerate 사용
(참고 자료 : https://www.daleseo.com/python-enumerate/ )
인덱스와 원소를 동시에 접근하여서 루프를 돌릴 수 있음
1️⃣
for entry in enumerate(['A', 'B', 'C']):
print(entry)
#결과화면
(0, 'A')
(1, 'B')
(2, 'C')
2️⃣
for i,letter in enumerate(['A','B','C']):
print(i,letter)
#결과화면
0 A
1 B
2 C
3️⃣ 시작 인덱스 변경
for i, letter in enumerate(['A', 'B', 'C'], start=1):
print(i,letter)
#결과화면
1 A
2 B
3 C
💻enumerate를 사용하여서 한 풀이
def solution(answers):
arr = [[1,2,3,4,5],[2,1,2,3,2,4,2,5],[3,3,1,1,2,2,4,4,5,5]]
result=[0,0,0]
for i,letter in enumerate(answers):
for index,a in enumerate(arr):
if letter == a[i%len(a)]:
result[index]+=1
return [i+1 for i,cnt in enumerate(result) if cnt==max(result)]
반응형
'[프로그래머스]Python,Java로 풀기 > Level 1' 카테고리의 다른 글
프로그래머스 ( 바탕화면 정리 ) - LEVEL 1 - python, java (0) | 2023.03.03 |
---|---|
프로그래머스 ( 카드 뭉치 ) - LEVEL 1 - python, java (0) | 2023.02.21 |
프로그래머스 문제 풀다가 모르는거 정리 (0) | 2022.06.15 |