문제 CountFactors coding task - Learn to Code - Codility Count factors of given number n. app.codility.com 문제 풀이 예를 들어 24라는 수가 주어지면 24의 약수의 개수를 효율적으로 구하는 문제이다. 24의 약수는 1, 2, 3, 4, 6, 8, 12, 24로 개수는 8개 이다. 코드 def solution(N): i = 1 ret = 0 while i * i < N: if N % i == 0: ret += 2 i += 1 return ret + 1 if i * i == N else ret 브루트포스로 풀면 효율성 부분을 통과할 수 없다. 약수는 구하고자 하는 수인 N 까지 모두 탐색하지 않아도 되는 특성을 활용하면 쉽게 ..
문제 MaxSliceSum coding task - Learn to Code - Codility Find a maximum sum of a compact subsequence of array elements. app.codility.com 문제 풀이 Max Profit 문제와 동일하게 브루트 포스로 풀지 않고, 카데인 알고리즘 사용하면 쉽게 풀 수 있다. 코드 def solution(A): max_sum = sub_sum = A.pop(0) for num in A: sub_sum = max(sub_sum + num, num) max_sum = max(max_sum, sub_sum) return max_sum
문제 https://app.codility.com/programmers/lessons/9-maximum_slice_problem/max_profit/ MaxProfit coding task - Learn to Code - Codility Given a log of stock prices compute the maximum possible earning. app.codility.com 문제 풀이 리스트의 값 들은 주식의 가격을 나타내고, 인덱스는 날짜이다. 주식을 산 후에 특정 날짜에 판매하였을 때 가장 큰 이득을 반환하면 된다. 이득이 없는 경우(마이너스) 에는 0을 반환한다. 코드 def solution(A): if len(A) < 2: return 0 max_profit = None min_price..
문제 https://app.codility.com/programmers/lessons/8-leader/equi_leader/ EquiLeader coding task - Learn to Code - Codility Find the index S such that the leaders of the sequences A[0], A[1], ..., A[S] and A[S + 1], A[S + 2], ..., A[N - 1] are the same. app.codility.com 문제 풀이 Dominator 문제와는 다르게, 각 구간 별로 left, right의 leader가 일치하는지 확인하는 문제이다. 주어진 예시의 경우 4, 3, 4, 4, 4, 2이다. 리스트의 앞에서 부터 구간을 left, right로..