- Django 기초
- 프로그래머스
- 코딩테스트
- 장고 기초
- 프로그래머스 알고리즘 고득점 kit
- 스프링 기초
- 백준 바닥장식 python
- programmers
- 코딩테스트 연습
- 코테
- 백준 dp
- 프로그래머스 고득점 kit
- 프로그래머스 레벨1
- Spring 초보
- 코테 연습
- 백준 다이나믹프로그래밍
- 장고
- 스프링 초보
- spring 기초
- dp 알고리즘
- 프로그래머스 level1
- 백준
- 프로그래머스 레벨2
- 프로그래머스 전화번호 목록 python
- 전화번호 목록 python
- 알고리즘 문제
- 알고리즘 공부
- Django
- 프로그래머스 전화번호 목록 파이썬
- 바닥장식 파이썬
- Today
- Total
일일구름 IT
프로그래머스 Lv.1 [모의고사] 완전탐색 본문
문제 설명
수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 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하는 값을 오름차순 정렬해주세요.
입출력 예
내 풀이 :
import math
def solution(answers):
answer = []
s = [[1, 2, 3, 4, 5] * math.ceil((len(answers)/5)),
[2, 1, 2, 3, 2, 4, 2, 5] * math.ceil((len(answers)/8)),
[3, 3, 1, 1, 2, 2, 4, 4, 5, 5] * math.ceil((len(answers)/10))]
score = [0, 0, 0]
for i in range(len(s)):
for j in range(len(answers)):
if s[i][j] == answers[j]:
score[i] += 1
max_score = max(score)
if max_score == score[0]:
answer.append(1)
if max_score == score[1]:
answer.append(2)
if max_score == score[2]:
answer.append(3)
return answer
1. 각자의 정답 배열을 answers 크기에 맞추 만들기 -> ceiling 이용
2. 맞춘 개수가 있는 리스트 만들기
3. 그중에서 가장큰 수 추출 -> max 사용
4. 여러명일 경우 올림차수
다른 사람 풀이 :
for idx, answer in enumerate(answers):
if answer == pattern1[idx%len(pattern1)]:
score[0] += 1
if answer == pattern2[idx%len(pattern2)]:
score[1] += 1
if answer == pattern3[idx%len(pattern3)]:
score[2] += 1
다른 사람의 해석에서 나머지 부분은 비슷했지만 처음부터 다른 사람들의 정답을 answer의 길이에 맞추어 초기화한 것과 달리 인덱스 값을 나누었습니다.
또한 for in 뒤에 enumerate()를 이용하여 인덱스와 원소로 이루어진 튜플을 할당 받을 수 있도록 하였습니다.
처음에 계속해서 5~12, 14번 테스트케이스가 통과가 되지 않았는데 그 이유는 가장 높은 점수를 가진 사람 만을 추출하고 여러 명일 경우 오름차순으로 정렬해 출력하는 것인데 그냥 맞춘 수가 높은 순으로 출력을 하였기 때문입니다.
이 문제를 풀 때 한번에 풀지 않고 풀다가 몇 일 후에 이어 풀게 되면서 문제를 잘못 해석한 것입니다. 이렇게 문제를 잘못 이해해 틀린 것은 내가 틀린 것이 아니라는 생각에 오히려 좋기도 하고 이런 것에 틀린 자신에 화가 나기도 합니다.
결론 : 문제 잘 읽자..!!
https://loud-scorpion-36f.notion.site/8aec8ee7cb5d4303a75ea372ab076615
'프로그래머스 > 프로그래머스 lv.1' 카테고리의 다른 글
프로그래머스 lv.1 [성격 유형 검사하기] 2022 KAKAO TECH INTERNSHIP (0) | 2022.08.25 |
---|---|
프로그래머스 lv.1 [체육복] 탐욕법 (0) | 2022.08.03 |
프로그래머스 lv.1 [k번째수] 정렬 (0) | 2022.07.14 |
프로그래머스 lv.1 [포켓몬] 해시 (0) | 2022.07.14 |
프로그래머스 lv.1 [소수 만들기] Summer/Winter Coding(~2018) (0) | 2022.07.06 |