알고리즘/programmers
20210225_코테공부
jungeun960
2021. 2. 25. 17:33
# 모의고사 (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)
반응형