문제 https://app.codility.com/programmers/lessons/6-sorting/max_product_of_three/ MaxProductOfThree coding task - Learn to Code - Codility Maximize A[P] * A[Q] * A[R] for any triplet (P, Q, R). app.codility.com 문제 풀이 리스트의 내의 값들 중 3개를 선택하여 곱하였을 때 가장 큰 값이 되는 경우를 찾는 문제이다. 코드 def solution(A): A.sort() max_plus = A[-1] * A[-2] * A[-3] max_minus = A[-1] * A[0] * A[1] return max(max_plus, max_minus) 처음에는..
문제 https://app.codility.com/programmers/lessons/6-sorting/distinct/ Distinct coding task - Learn to Code - Codility Compute number of distinct values in an array. app.codility.com 문제 풀이 리스트 내에 중복되는 원소들을 제외하고 구분되는 값들이 몇개가 있는지 반환하는 문제이다. 코드 def solution(A): return len(set(A)) set을 통해 중복 값을 제외하고 구분되는 값을 구할 수 있다.

문제 https://app.codility.com/programmers/lessons/5-prefix_sums/passing_cars/ PassingCars coding task - Learn to Code - Codility Count the number of passing cars on the road. app.codility.com 리스트 내의 자동차 방향(east: 0 , west :1)이 주어질 때, 각 방향이 쌍을 이루는 횟수를 찾는 문제이다. 만약 인덱스 3에서 east로 가는 자동차가 있다면, 인덱스 3 이후로의 자동차들만 쌍을 이루는지 확인하고, 앞 부분은 확인하지 않아도 된다. 문제 풀이 그림 1은 문제의 기본 예제에서 값을 도출하는 과정이다. 0 (east)로 가는 자동차와 1 (we..
문제 https://app.codility.com/programmers/lessons/5-prefix_sums/min_avg_two_slice/ MinAvgTwoSlice coding task - Learn to Code - Codility Find the minimal average of any slice containing at least two elements. app.codility.com 문제를 보면 모든 구간에 대해 평균을 구해야 할 것 같다. 하지만 모든 구간에 대한 평균을 구할 경우 효율성 부분을 통과하지 못하여 점수를 받지 못한다. 서브 그룹에서 평균을 구할 때의 특성을 활용할 경우 문제를 쉽게 해결 할 수 있으나 그렇지 않을 경우는 풀지 못한다. 문제 풀이 예를 들어 수가 4, 2, 2..
문제 코딩테스트 연습 - 완주하지 못한 선수 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수�� programmers.co.kr 문제 풀이 참여자와 완주자의 목록을 탐색하여, 완주하지 않은 사람을 찾는 문제이다. 각 리스트를 탐색하여 정답을 도출할 수 도 있지만, 파이썬의 Counter를 잘 활용하면 간단히 문제를 해결할 수 있는 문제이다. 코드 from collections import Counter def solution(participant, completion): return list(Counter(participant) - Counter(complet..
all, any # 적절한 예시는 아니지만, any의 경우 iterable 중 하나라도 만족하지 않는 경우 # all의 경우 iterable에서 모든 경우가 만족하는 경우를 찾을 수 있다. if any(10 > x for x in list): return False else all(10 > x for x in list): return True 행렬 대각선 인덱스 def diagonal(matrix): # ↘ left_right = [matrix[i][j] for i in range(len(matrix))] # ↙ right_left = [matrix[i][len(matrix) - i - 1] for i in range(len(matrix))] 행렬 전환 # 전체는 list 타임이지만, 하나의 행을 선택하..
문제 https://app.codility.com/programmers/lessons/5-prefix_sums/genomic_range_query/ DNS 시퀀스는 A, C, G, T로 나타낼 수 있고 각각의 impact factor는 1, 2, 3, 4이다. P, Q 리스트는 각각 시작과 끝의 정보를 가진다고 생각하면 된다. 만약 CAGCCTA라는 DNS 시퀀스가 주어질 때 P[0] = 2, Q[0] = 4라면 DNS 시퀀스 중 2~4에 해당하는 값이 탐색 범위이다. (CAGCCTA) 탐색 범위 중 가장 작은 impact factor를 가지는 값을 찾아서 반환하면 된다. 문제 풀이 prefix sum으로 풀 수 있지만, 예외 처리로도 해당 문제를 풀 수 있다. 코드 def solution(S, P, Q..