https://programmers.co.kr/learn/courses/30/lessons/42840
모의고사 문제 다시풀었다.
def solution(answers):
answer = []
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]
m1 = 0
m2 = 0
m3 = 0
for i in range(len(answers)):
if math1[i % 5] == answers[i]:
m1 += 1
if math2[i % 8] == answers[i]:
m2 += 1
if math3[i % 10] == answers[i]:
m3 += 1
ans_max = max(m1,m2,m3)
if ans_max == m1:
answer.append(1)
if ans_max == m2:
answer.append(2)
if ans_max == m3:
answer.append(3)
return answer
자바로 풀었을 때와 다름없는 구린 코드 ㅋ 아마 똑같을듯
그래서 포스팅 안하려다가 다른 사람 풀이 보고 포스팅한다.
다른 사람 풀이
파이썬에서는 for문 대신 enumerate를 사용할 수 있다.
저거는 인덱스랑 저 안 리스트 값이랑 매핑해주는거임
그래서 for i, in_list in enumerate(list):
이런식으로 써주면 i가 인덱스, in_list가 리스트 안에 있는 값이 된다.
+ for i, in_list in enumerate(list, start = 100):
이라고 해주면 인덱스가 100부터 시작하게 할 수도 있음
아무튼 내가 for i in range(len(answers)) 로 answers 안의 인덱스 값을 i로 정해준 것처럼
저분은 enumerate로 인덱스 생성했다.
그리고 나는 변수 3개를 만들어서 맞춘 개수 +1씩 하고 일케 했는데
이분은 맞추면 score라는 리스트 각 인덱스 자리에 +1 하고
score의 max값이 score안에 있는 값과 같으면 answer에 append하는 식으로...! 했다. 이것도 아주 기발한듯 하하
그리고
이분처럼 마지막 줄에
return [i + 1 for i, v in enumerate(s) if v == max(s)]
이렇게 한줄로 리턴해줄 수도 있다.! 인덱스를 출력할거라서 +1 해서 출력 갈김
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 로또의 최고 순위와 최저 순위 for JAVA (0) | 2022.09.25 |
---|---|
[프로그래머스] 입국심사 for Java (0) | 2022.09.18 |
[프로그래머스] 완주하지 못한 선수 for Python (0) | 2022.03.20 |
[프로그래머스] 소수 만들기 for Python (0) | 2022.03.19 |
[프로그래머스] 신고 결과 받기 for Python (0) | 2022.03.17 |