기억은 짧고 기록은 길다
[프로그래머스/Programmers] 모의고사 - Python 본문
Link
코딩테스트 연습 - 모의고사
수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. 1번 수포자가 찍는
programmers.co.kr
Solution
매번 코딩테스트를 풀때 단계별로 나누어 푸는 것이 좋다고 생각한다.
이번 문제에서는 각각 정답이 맞았을 때의 개수를 세기 위한 코드를 먼저 작성하였다.
for i in range(len(answer)):
if answer[i] == p1[i]:
count[0] += 1
if answer[i] == p2[i]:
count[1] += 1
if answer[i] == p3[i]:
count[2] += 1
이와 같이 코드를 작성한 후 어떻게 하면 다른 정답지들의 길이에 대해 비교할 수 있을까 생각하였고 그 결과 %를 사용하여 나머지를 이용하면 좋겠다는 생각을 하게 되며 문제를 해결하였다.
def solution(answer):
p1 = [1, 2, 3, 4, 5]
p2 = [2, 1, 2, 3, 2, 4, 2, 5]
p3 = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5]
count = [0, 0, 0]
for i in range(len(answer)):
if answer[i % len(p1)] == p1[i]:
count[0] += 1
if answer[i % len(p2)] == p2[i]:
count[1] += 1
if answer[i % len(p3)] == p3[i]:
count[2] += 1
return [i + 1 for i in range(3) if count[i] == max(count)]
🔑 key point: answer[i % len(p)]
📌 Tip: enumerate()
Other Solution
def solution(answers):
p = [[1, 2, 3, 4, 5],
[2, 1, 2, 3, 2, 4, 2, 5],
[3, 3, 1, 1, 2, 2, 4, 4, 5, 5]]
s = [0] * len(p)
for i, j in enumerate(answers):
for m, n in enumerate(p):
if j == n[m % len(n)]:
s[m] += 1
return [i + 1 for i, v in enumerate(s) if v == max(s)]
'CodingTest > programmers' 카테고리의 다른 글
[프로그래머스/Programmers] 두 개 뽑아서 더하기 - Python (0) | 2021.08.13 |
---|---|
[프로그래머스/Programmers] 음양 더하기 - Python (0) | 2021.08.12 |
[프로그래머스/Programmers] K번째수 - Python (0) | 2021.08.12 |
[프로그래머스/Programmers] 소수 만들기 - Python (0) | 2021.08.12 |
[프로그래머스/Programmers] 폰켓몬 - Python (0) | 2021.08.11 |
Comments