# https://school.programmers.co.kr/learn/courses/30/lessons/42840
# 문제의 주소
# def solution(answers):
# answer = []
# return answer
answer = []
answer_num1 = 0 # 1번의 정답수
answer_num2 = 0 # 2번의 정답수
answer_num3 = 0 # 3번의 정답수
how_many_repeat = 0 # 얼마나 반복하였는가
# answers = [1, 2, 4, 5, 4, 1, 2, 3, 4, 5] 1번 수포자 테스트용 예시정답
# answers = [2, 1, 2, 4, 4, 2, 2, 4, 2, 1, 2, 4, 4, 2, 2, 5] #2 번 수포자 테스트용 예시정답
# answers = [3, 3, 1, 1, 2, 7, 4, 7, 5, 7, 3, 3, 1, 1, 2, 2, 4, 4, 5, 5] #3 번 수포자 테스트용 예시정답
# 문제 채점 방식
answers = [0, 0, 0, 0, 0, 0, 0, 0, 0, 5] # 복수 정답자 테스트용 코드
for i in answers: # i 는 answers의 몇번째 놈인가...
how_many_repeat += 1 # 횟수를 더해줌
one_supo = [1, 2, 3, 4, 5] # 수포자1의 찍기 패턴
two_supo = [2, 1, 2, 3, 2, 4, 2, 5] #수포자2의 찍기 패턴
three_supo = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5] #수포자3의 찍기 패턴
# print('몇번째 문제인가:', how_many_repeat) # 확인용 코드 세줄
# print('수포자정답패턴:',one_supo[(how_many_repeat % 5)-1]) # 확인용 코드 세줄
# print('i =', i) # 확인용 코드 세줄
# print('i:', i, 'two_supo:', two_supo[(how_many_repeat % 8) - 1]) # 수포자 2 확인용 코드
# print(i, three_supo[(how_many_repeat % 10) - 1]) # 수포자 3 확인용 코드
if i == one_supo[(how_many_repeat % 5)-1]: # 정답이면, one_supo는 찍는 방식의 리스트
answer_num1 = answer_num1 + 1 # 1번 수포자의 정답수 +1
# # -----------------------------------1번 수포자
if i == two_supo[(how_many_repeat % 8)-1]:
answer_num2 = answer_num2 + 1 # 2번 수포자의 정답수 +1
# -----------------------------------2번 수포자
if i == three_supo[(how_many_repeat % 10)-1]:
answer_num3 = answer_num3 + 1 # 정답수 +1
# -----------------------------------3번 수포자
whoisbest = [answer_num1, answer_num2, answer_num3] # 정답 많은 순으로 정렬
# result = whoisbest.sort() # 이렇게 썻을 경우 되지 않았다 왜?
# print(whoisbest)
whoisbest.sort()
# print(whoisbest)
# print(whoisbest[2])
if answer_num1 == whoisbest[2]:
answer.append(1)
if answer_num2 == whoisbest[2]:
answer.append(2)
if answer_num3 == whoisbest[2]:
answer.append(3)
print(answer)
수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 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하는 값을 오름차순 정렬해주세요.
answer = []
answer_num1 = 0 # 1번의 정답수
answer_num2 = 0 # 2번의 정답수
answer_num3 = 0 # 3번의 정답수
how_many_repeat = 0 # 얼마나 반복하였는가
변수들 정의
for i in answers: # i 는 answers의 몇번째 놈인가...
how_many_repeat += 1 # 횟수를 더해줌
one_supo = [1, 2, 3, 4, 5] # 수포자1의 찍기 패턴
two_supo = [2, 1, 2, 3, 2, 4, 2, 5] #수포자2의 찍기 패턴
three_supo = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5] #수포자3의 찍기 패턴
수포자들의 찍기 패턴을 리스트로 만듬
if i == one_supo[(how_many_repeat % 5)-1]: # 정답이면, one_supo는 찍는 방식의 리스트
answer_num1 = answer_num1 + 1 # 1번 수포자의 정답수 +1
# # -----------------------------------1번 수포자
if i == two_supo[(how_many_repeat % 8)-1]:
answer_num2 = answer_num2 + 1 # 2번 수포자의 정답수 +1
# -----------------------------------2번 수포자
if i == three_supo[(how_many_repeat % 10)-1]:
answer_num3 = answer_num3 + 1 # 정답수 +1
# -----------------------------------3번 수포자
정답 판별
whoisbest = [answer_num1, answer_num2, answer_num3] # 정답 많은 순으로 정렬
whoisbest.sort()
if answer_num1 == whoisbest[2]:
answer.append(1)
if answer_num2 == whoisbest[2]:
answer.append(2)
if answer_num3 == whoisbest[2]:
answer.append(3)
print(answer)
answer
집합
집합은 중복을 제거 set
튜플
튜플은 수정 불가 ()
교집합 & 합집합 |
f-string
print(name+'의 점수는'+str(score)+'점입니다.')
print(f'{name}의 점수는 {score}점입니다.')
예외처리
try: 예를 시도해
except: 근데 에러가 나면 이걸 실행해
에러를 내고 꺼지면 안되니까
혹시 내 잘못이 아니라 서버잘못일 수도 있으니까 그럴때 쓴다.
그런데 자주쓰면 돌아는 가는데 이상하게 돌아갈 수도 있다.
되도록 안쓰는 것을 추천
파일 불러오기
from (파일 이름) import (그 파일에서 뭘 가져올래?)
'코딩 > python' 카테고리의 다른 글
파이썬과 장고에 대하여 오늘 깨달음 (0) | 2023.04.13 |
---|