콜론(:) 까먹는 버릇 때문에 하루종일 에러가 뜨는 나
파이썬 기초2 - 프로그래머스 "모의고사" 문제
* 문제 설명
수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다.
수포자는 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]
|
* 풀이
구해야 하는 것 > 가장 많은 문제를 맞힌 사람
> 수포자들의 찍는 방식과 받아오는 답안을 비교 > 정답 시 카운트 up > 카운트가 가장 높은 수포자를 찾기
* 찍는 방식!
1. 그냥 쓴다!
밑에서 돌리면 된다.
def solution(answers):
case1 = [1, 2, 3, 4, 5]
case2 = [2, 1, 2, 3, 2, 4, 2, 5]
case3 = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5]
2. 함수로? 만든다?
이건 아닌 것 같아~
* 정답 비교하기!
1. for in range로 (근데 이렇게 할거면 위에 case별로 10000개의 배열을 갖도록 곱해줘야 할 것같다.)
for i in range (len(answers)) # i를 answers까지 하나씩 ㄱㄱ혓
if answers[i] == case1[i]: # 만약 answers의 i번째 요소 == case1의 i번째 요소라면
cnt[0] += 1 # cnt의 0번째를 1만큼 올리기
for i in range(len(answers)):
if answers[i] == case1[i]:
cnt[0] += 1
if answers[i] == case2[i]:
cnt[1] += 1
if answers[i] == case3[i]:
cnt[2] += 1
2. enumerate로
for i, a in enumerate(answers): # answers의 요소와 해당 요소의 인덱스(i)를 반복문에서 사용한다 이말이야
if a == case1[i % len(case1)]: # 만약 a == case1의 (i를 (case1의 길이)로 나눈 나머지)번째 요소라면
cnt[0] += 1 # cnt 리스트의 [0]번째 값을 1 올린다.
for i, a in enumerate(answers):
if a == case1[i % len(case1)]:
cnt[0] += 1
if a == case2[i % len(case2)]:
cnt[1] += 1
if a == case3[i % len(case3)]:
cnt[2] += 1
* 그래서 1등은?
1. 같은 방법으로 하나씩 돌려주면 끝
answer = []
for i in range(len(cnt)):
if cnt[i] == max_cnt:
answer.append(i+1)
2. 이렇게도 가능
answer = []
for i, a in enumerate(cnt):
if a == max(cnt):
answer.append(i+1)
3. 이렇게도 가능2
max_cnt = max(cnt)
answer = [i+1 for i, count in enumerate(cnt) if count == max_cnt]
return answer
'WIL&TIL > TIL' 카테고리의 다른 글
20230323 TIL - Python 문법 강의, 연습 문제 풀이 (0) | 2023.03.23 |
---|---|
20230322 TIL - 연습, 문제 위주 (0) | 2023.03.22 |
20230320 TIL - Python 기초 강의 (0) | 2023.03.20 |
20230317 TIL (0) | 2023.03.17 |
20230316 TIL (0) | 2023.03.16 |
댓글