1. 모의고사 (Lv. 1)
# 모의고사
def solution(answers):
answer = []
one = [1, 2, 3, 4, 5]
two = [2, 1, 2, 3, 2, 4, 2, 5]
thr = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5]
one = one*(len(answers)//len(one)) + one[:(len(answers) % len(one))]
two = two*(len(answers)//len(two)) + two[:(len(answers) % len(two))]
thr = thr*(len(answers)//len(thr)) + thr[:(len(answers) % len(thr))]
result = [0, 0, 0]
for i in range(len(answers)):
if one[i] == answers[i]:
result[0] += 1
if two[i] == answers[i]:
result[1] += 1
if thr[i] == answers[i]:
result[2] += 1
answer = [i+1 for i in range(len(result)) if result[i] == max(result)]
return answer
one, two, three 학생들이 찍는 방법을 모두 답안지(answers) 길이에 맞춰준다.
이후 완전 탐색을 해서 맞춘 개수의 최댓값과 같은 학생의 번호를 answer로 초기화
2. 소수 찾기 (Lv. 2)
# 소수 찾기
import math
from itertools import permutations as perm
def solution(numbers):
arr = set()
for x in range(1, len(numbers)+1):
temp = set(perm(numbers, x))
for x in temp:
str = ''.join(x)
number = int(str)
arr.add(number)
answer = 0
for x in arr:
if check(x):
answer += 1
return answer
def check(number):
if number == 0 or number == 1:
return False
for x in range(2, int(math.sqrt(number))+1):
if number % x == 0:
return False
return True
permutations를 이용해서 모든 경우의 수를 구하고, 집합(set)의 성질을 이용해서 중복되는 값을 걸러준다.
이후 결과물인 집합을 돌면서 소수 판별 (check : 2부터 제곱근까지 나눈 수가 0이 아니면 소수)
3. 카펫 (Lv. 2)
# 카펫
def solution(brown, yellow):
answer = []
for i in range(2, brown, 2):
row = (brown - i) // 2
column = i // 2 + 2
if row < column:
break
temp = (row-2) * (column-2)
if temp > 0 and temp == yellow:
answer = [row, column]
return answer
리스트의 row와 column의 특징을 이용 : brown의 값을 이용하여 row, column을 설정
row < column이면, 문제의 조건에 따라 break
테두리의 한줄을 뺀 내부의 넓이(row-2 * column-2)가 yellow와 같다면 answer = [row, column]
'Algorithm > 프로그래머스 고득점 Kit' 카테고리의 다른 글
[프로그래머스] 고득점Kit (6) - 그리디(2) (파이썬) (0) | 2022.03.09 |
---|---|
[프로그래머스] 고득점Kit (6) - 그리디(1) (파이썬) (0) | 2022.03.05 |
[프로그래머스] 고득점Kit (4) - 정렬 (파이썬) (0) | 2022.03.04 |
[프로그래머스] 고득점Kit (3) - 힙 (파이썬) (0) | 2022.03.02 |
[프로그래머스] 고득점Kit (2) - 스택/큐 (파이썬) (0) | 2022.03.01 |