문제 https://app.codility.com/programmers/lessons/3-time_complexity/tape_equilibrium/ 배열에 다섯개의 값들이 있으면 각 구간 별로 나누어 값을 합산 후에 차를 계산하여 가장 작은 차가 되는 값을 찾는 문제이다. 문제 풀이 처음에는 list를 슬라이싱하여 문제에 접근하였다. 슬라이싱으로 인한 오버헤드가 그렇게 큰지는 처음 알았다. def soultion(A): min_diff = None for i in range(len(A) - 1): diff = abs(sum(A[:i + 1]) - sum(A[i + 1:])) if min_diff is None: min_diff = diff else: min_diff = min(min_diff, diff..
문제 https://app.codility.com/programmers/lessons/3-time_complexity/perm_missing_elem/ 배열에 있는 원소들의 수는 N이고 그 중 없는 원소를 찾아야 한다. 예를 들어 1, 2, 3, 5라면 빠진 수는 4이다. 문제 풀이 Counter를 활용하면 문제를 쉽게 해결할 수 있다. 코드 from collections import Counter def solution(A): check = [num + 1 for num in range(len(A) + 1)] return list(Counter(check) - Counter(A))[0]
문제 https://app.codility.com/programmers/lessons/3-time_complexity/frog_jmp/ 개구리의 처음 위치는 X이다. 개구리가 한번 점프할때, 고정된 거리 D만큼 이동할 경우 Y에 도착할 수 있는 최소 점프 횟수를 구하는 문제이다. 문제 풀이 몫과 나머지를 활용하여서 문제를 풀면 쉽게 해결할 수 있다. 코드 def solution(X, Y, D): q, r = divmod(Y - X, D) return q + 1 if r else q
permutations from itertools import permutations nums = [num + 1 for num in range(3)] for cases in permutations(nums, 2): print(cases, end=' ') permutations(iterater, reapeat)를 통해 순열을 구할 수 있다. 결과 : (1, 2) (1, 3) (2, 1) (2, 3) (3, 1) (3, 2), 가능한 모든 순서로 반복을 하지 않음 combinations from itertools import combinations nums = [num + 1 for num in range(3)] for cases in combinations(nums, 2): print(cases, end..