코딩/python

파이썬 연습 문제풀이

김은수2 2023. 3. 21. 19:45
# 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