brute force algorithm
와 드디어 첫 시도에 맞췄다! level1이라서 그런가보다.
def solution(answers):
tester1 = [1, 2, 3, 4, 5]
tester2 = [2, 1, 2, 3, 2, 4, 2, 5]
tester3 = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5]
rights = [0,0,0]
count = 0
for answer in answers:
if answer == tester1[count%len(tester1)]:
rights[0] += 1
if answer == tester2[count%len(tester2)]:
rights[1] += 1
if answer == tester3[count%len(tester3)]:
rights[2] += 1
count += 1
max = rights[0]
result = [1]
if rights[1] > max:
max = rights[1]
result = [2]
elif rights[1] == max:
result.append(2)
if rights[2] > max:
max = rights[2]
result = [3]
elif rights[2] == max:
result.append(3)
조합 재귀로 구해주는 코드를 짜려고 했는데 어려워서 라이브러리 썼다.
몬가.. 드럽게 짠 느낌..
#coding:utf8
# 소수 찾기
# 완전 탐색
from itertools import permutations
def solution(numbers):
answer = 0
# 중복 조합 생성
perList = []
for i in range(len(numbers)):
pers = list(permutations(list(numbers),i+1))
for per in pers:
per = int("".join(per))
if per not in perList:
perList.append(per)
# 소수인지 체크
for num in perList:
primeBool = True
if num == 1 or num == 0:
primeBool = False
else:
for j in range(2,num):
if num%j == 0:
primeBool = False
break
if primeBool:
answer += 1
return answer
print(solution("011"))
아 빨리 풀어서 뿌덧했는데 다른 사람들 풀이 넘 멋지다..
#coding:utf8
# 카펫
# 완전탐색
def solution(brown, yellow):
answer = []
divisors = []
# yellow의 약수구하기
for i in range(1,yellow):
if yellow % i == 0:
if yellow/i < i :
break
divisors.append(yellow/i)
divisors.append(i)
if yellow == 1:
divisors = [1,1]
# 가로세로 길이 구하기
for j in range(0, len(divisors), 2):
if brown == divisors[j]*2 + divisors[j+1]*2 + 4:
answer = [divisors[j]+2,divisors[j+1]+2]
break
return answer
print(solution(10, 2))
ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ