문제 코딩테스트 연습 - 전화번호 목록 전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다. 구조�� programmers.co.kr 문제 풀이 각 전화번호가 다른 전화번호의 접두어와 일치하는지 확인하는 문제이다. 따라서 전화번호 하나를 선택하여, 다른 전화번호의 접두어인지 확인하면 문제를 풀 수 있다. 코드 def solution(phone_book): for phone_number in phone_book: for other_number in phone_book: if phone_number != other_number and phone_number == other_number..
문제 https://app.codility.com/programmers/lessons/6-sorting/triangle/ Triangle coding task - Learn to Code - Codility Determine whether a triangle can be built from a given set of edges. app.codility.com 문제 풀이 리스트 내의 값들을 조합하여, 삼각형이 되는 경우가 있는지 확인하는 문제이다. 코드 def solution(A): A.sort() for i in range(len(A) - 2): if A[i] + A[i + 1] > A[i + 2]: return 1 return 0 처음에는 음수인 경우를 생각하지 못하고 제출하였는데, 곱하기 이므로 음수..
문제 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 타임이지만, 하나의 행을 선택하..