https://programmers.co.kr/learn/courses/30/lessons/42840
🚩 문제 설명
◾ 문제를 찍는 방식 3가지가 주어지고 모의고사 정답이 든 배열이 주어진다.
◾ 3가지 방식 중에서 가장 많이 문제를 맞힌 사람이 누구인지 구하는 문제
✅ 입출력
answers | return |
[1,2,3,4,5] | [1] |
[1,3,2,4,2] |
[1,2,3] |
✔️ 예시
만약 정답이 [1, 3, 2, 4, 2] 라고 한다면
수포자 찍는 방식 | 맞힌 갯수 | return |
1 2 3 4 5 | 2 | [1] |
2 1 2 3 2 4 2 5 | 2 | [1, 2] |
3 3 1 1 2 2 4 4 5 5 | 1 | [1, 2, 3] |
◾ 따라서 이 예시에서는 첫번째, 두번째 수포자가 첫번째로 들어가야한다.
◾ 여러 사람을 리턴할 시에는 오름차순으로 리턴해야한다.
📑 문제 풀이
파이썬으로 풀었다.
math1 = [1, 2, 3, 4, 5]
math2 = [2, 1, 2, 3, 2, 4, 2, 5]
math3 = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5]
def solution(answers):
ans = []
cnt1, cnt2, cnt3 = 0, 0, 0
for i in range(len(answers)): # 0 ~ 4 만큼 돈다
if answers[i] == math1[i % len(math1)]:
cnt1 += 1
if answers[i] == math2[i % len(math2)]:
cnt2 += 1
if answers[i] == math3[i % len(math3)]:
cnt3 += 1
if cnt1 >= max(cnt2, cnt3):
ans.append(1)
if cnt2 >= max(cnt1, cnt3):
ans.append(2)
if cnt3 >= max(cnt1, cnt2):
ans.append(3)
return ans
◾ 각 찍는 방식을 math 배열로 만들어줬다.
◾ 반복문은 answers의 길이만큼 돈다.
◾ 만약 answers의 요소와 찍는 방식의 요소가 같다면 카운트 해준다.
- answers의 길이가 찍는 방식의 배열의 길이보다 클 수 있으므로
- % len(math) 이런식으로 나머지를 구하는 방식으로 인덱스를 구해준다.
◾ 최댓값 순서대로 ans 배열에 추가해준다.
728x90
'✏️ 𝗔𝗹𝗴𝗼𝗿𝗶𝘁𝗵𝗺 > 프로그래머스' 카테고리의 다른 글
[PG42888] 오픈채팅방 (0) | 2021.11.21 |
---|---|
[PG42860] 조이스틱 (0) | 2021.11.06 |
[PG64061] 크레인 인형뽑기 게임 (0) | 2021.11.06 |
[PG67256] 키패드 누르기 (0) | 2021.11.06 |
[PG81301] 숫자 문자열과 영단어 (0) | 2021.11.06 |