문제) 모의고사
코딩테스트 연습 - 모의고사
수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. 1번 수포자가 찍는
programmers.co.kr
- 내 풀이
- 리스트 곱셈으로 1,2,3번 학생의 답안 만듦
- count() 함수를 사용
- 최댓값의 개수만큼만 반복하여 최댓값 인덱스를 0으로 만들 수 있게 함
- → 같은 값을 가지는 다음 인덱스 구할 수 있음
- 인덱스 구하는 방식: index() 사용
def solution(answers):
score=[0,0,0]
result=[]
one=[1,2,3,4,5]*(len(answers)//5+1)
two=[2,1,2,3,2,4,2,5]*(len(answers)//8+1)
three=[3,3,1,1,2,2,4,4,5,5]*(len(answers)//10+1)
for i in range(len(answers)):
ans=answers[i]
if ans==one[i]:
score[0]+=1
if ans==two[i]:
score[1]+=1
if ans==three[i]:
score[2]+=1
m_score=score.count(max(score))
for i in range(m_score):
index_s=score.index(max(score))
result.append(index_s+1)
score[index_s]=0
result=list(set(result))
return result
- 다른 사람 풀이
- 인덱스 구하는 방식: enumerate() 사용
- enumerate() 함수는 기본적으로 인덱스와 원소로 이루어진 tuple을 생성
- 인덱스와 원소를 각각 다른 변수에 할당하고 싶다면 인자 풀기(unpacking)를 해줘야 함
- 규칙만큼만 리스트 값 삽입 → 메모리 감소
- 정답의 인덱스 값 % 각각의 규칙 수
- % 나머지 연산으로 인덱스 구할 수 있음
- 인덱스 구하는 방식: enumerate() 사용
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'코딩테스트 > 프로그래머스' 카테고리의 다른 글
| [프로그래머스] [Level 1] 내적 (0) | 2022.03.23 |
|---|---|
| [프로그래머스] [Level 1] 소수 만들기 (0) | 2022.03.21 |
| [프로그래머스] [Level 1] [탐욕법(Greedy)] 체육복 (0) | 2022.03.21 |
| [프로그래머스] [Level 1] 폰켓몬 (0) | 2022.03.20 |
| [프로그래머스] [Level 1] 3진법 뒤집기 (0) | 2022.03.17 |