# 모의고사 (Level 1)
def solution(answers):
answer = []
math_1 = [1, 2, 3, 4, 5]
math_2 = [2, 1, 2, 3, 2, 4, 2, 5]
math_3 = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5]
count = [0,0,0]
for i in range(len(answers)):
if answers[i] == math_1[i%5]:
count[0] +=1
if answers[i] == math_2[i%8]:
count[1] +=1
if answers[i] == math_3[i%10]:
count[2] +=1
for i in range(3):
if count[i] == max(count):
answer.append(i+1)
return answer
# 소수 찾기 (Level 2)
- itertools를 이용해 순열 구하기 permutations (참고)
- 중복되는 수 set으로 줄여 속도 높이기
- 소수 판정 -> 시간복잡도를 위하여 1) 제곱근 2) 에라토스테네스 체 이용하기
from itertools import permutations
import math
def check(n): # 소수 판별
k = math.sqrt(n) # 제곱근 사용
if n < 2:
return False
for i in range(2, int(k)+1):
if n % i == 0:
return False
return True
def solution(numbers):
answer = []
for k in range(1, len(numbers)+1):
perlist = set(list(map(''.join, permutations(list(numbers), k)))) # k개 순열 구하기
for i in list(perlist):
if check(int(i)):
answer.append(int(i))
answer = len(set(answer))
return answer
# 카펫 (Level 2)
def solution(brown, yellow):
xy = brown + yellow
plus_xy = (xy - yellow + 4)//2
for i in range(1,xy//2+1):
if i + xy/i == plus_xy:
return sorted([i,xy//i], reverse = True)
반응형
'알고리즘 > programmers' 카테고리의 다른 글
20210312_코테공부 (0) | 2021.03.12 |
---|---|
[ 프로그래머스 / 파이썬 ] 프로그래머스 LEVEL 1 풀이 (0) | 2021.03.04 |
[ 프로그래머스 / 파이썬 ] 프로그래머스 LEVEL 1 풀이 (0) | 2021.03.02 |
20210224_코테공부 (0) | 2021.02.24 |
20210217_코테공부 (0) | 2021.02.17 |