문제 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..
문제 https://app.codility.com/programmers/lessons/2-arrays/odd_occurrences_in_array/ 주어진 배열에 홀수 값들은 각각 한쌍을 이루지만, 하나의 수는 쌍을 이루지 못한다. 즉, 쌍을 이루지 못하는 수를 찾으면 된다. 문제 풀이 미리 정렬해두고, 각각의 값은 쌍을 이루므로 인덱스를 2개씩 확인하면 효율성을 높일 수 있다. 코드 def solution(A): if len(A) == 1: return A[0] A = sorted(A) for i in range(0, len(A), 2): if i + 1 == len(A): return A[i] if A[i] != A[i + 1]: return A[i] 최초에 작성한 코드는 시간 복잡도로 인해 효율성이..