.
from itertools import *
def solution(nums):
answer = 0
sum = 0
A = list(combinations(nums,3)) #조합 사용. 그리고 리스트화. 각 조합이 리스트의 요소가 됨.
for i in range(len(A)):
for k in range(3):
sum = sum + A[i][k]
for n in range(2,sum):
if (sum % n) == 0:
break #소수가 아닌게 판명되면 반복문 빠져나와 다른 경우의 수 탐색
elif (sum % n) !=0:
if(n==sum-1): #소수임이 판명되면,
answer = answer + 1 # 경우의 수가 하나 증가한다.
break
continue #소수임을 판별하려면 1과 본인을 제외한 모든 수로 나누어 보아야 하므로 끝날 때 까지 진행
sum = 0
return answer
.
def solution(nums):
answer = 0
A = []
for i in nums:
if i not in A:
A.append(i)
if len(A) <= len(nums)/2:
answer = len(A) # 전체에서 절반을 가져 갈 수 있다 하더라도 종류가 한정됨.
return answer
else:
answer = len(nums)/2 # 종류가 전체의 절반이 넘더라도 가져갈 수 있는 수는 결국 전체의 절반임
return answer
.
예상 대진표 문제
:△△ 게임대회가 개최되었습니다. 이 대회는 N명이 참가하고, 토너먼트 형식으로 진행됩니다. N명의 참가자는 각각 1부터 N번을 차례대로 배정받습니다. 그리고, 1번↔2번, 3번↔4번, ... , N-1번↔N번의 참가자끼리 게임을 진행합니다. 각 게임에서 이긴 사람은 다음 라운드에 진출할 수 있습니다. 이때, 다음 라운드에 진출할 참가자의 번호는 다시 1번부터 N/2번을 차례대로 배정받습니다. 만약 1번↔2번 끼리 겨루는 게임에서 2번이 승리했다면 다음 라운드에서 1번을 부여받고, 3번↔4번에서 겨루는 게임에서 3번이 승리했다면 다음 라운드에서 2번을 부여받게 됩니다. 게임은 최종 한 명이 남을 때까지 진행됩니다.
이때, 처음 라운드에서 A번을 가진 참가자는 경쟁자로 생각하는 B번 참가자와 몇 번째 라운드에서 만나는지 궁금해졌습니다. 게임 참가자 수 N, 참가자 번호 A, 경쟁자 번호 B가 함수 solution의 매개변수로 주어질 때, 처음 라운드에서 A번을 가진 참가자는 경쟁자로 생각하는 B번 참가자와 몇 번째 라운드에서 만나는지 return 하는 solution 함수를 완성해 주세요. 단, A번 참가자와 B번 참가자는 서로 붙게 되기 전까지 항상 이긴다고 가정합니다.
N : 2^1 이상 2^20 이하인 자연수 (2의 지수 승으로 주어지므로 부전승은 발생하지 않습니다.)
A, B : N 이하인 자연수 (단, A ≠ B 입니다.)
def solution(n,a,b):
answer = 0
while n >= 2:
if (b%2 == 0)&(a == b-1) | (b%2 == 1)&(a == b+1): # 서로 만났을 때
answer = answer +1
return answer
elif n == 2: # 특수 경우
answer = answer +1
return answer
else: # 서로 아직은 만나지 않을 때
answer = answer + 1
n=n/2
a = a//2 + a%2
b = b//2 + b%2
.
# 피보나치 수열 재귀함수 방식
def Fibo(n):
if n==0:
return 0
elif n==1:
return 1
else:
return Fibo(n-1) + Fibo(n-2)
Fibo(4)
.
# 피보나치 수열 iterative 방식(while)
def fibo():
a, b = 0, 1
while True:
a, b = b, a + b
yield a
f = fibo()
next(f)
.
# 피보나치 수열 iterative 방식(for)
def fibo(n):
a = 0
b = 1
if n <0:
return -1
elif n == 0:
return 0
elif n == 1:
return 1
else:
for i in range(1, n):
a, b = b, b + a
return b
fibo(10)