공부
-
[python] Codility Lesson 6-4. NumberOfDiscIntersections공부/알고리즘 2021. 8. 16. 13:44
1. Sorting section에 위치한 문제라 sort를 해야 시간복잡도에서 무사히 통과하리라 생각했지만 쉽게 방법이 떠오르지 않아 손 내키는데로 작성해 보았다. 원의 중심은 list에서 순차적으로 증가하니, 2중 for문을 돌면서 first_비교원의 최대값이 second_비교원의 최소값보다 크거나 같은경우 answer_count += 1 정확도는 100%를 달성했지만 performance에서 망가진 O(N*2) 코딜리티는 N*2을 가만두지 않는다 ㅠㅠ def solution(A): answer_count = 0 for i in range(len(A)-1): for j in range(i+1, len(A)): if i+A[i] >= j-A[j]: answer_count +=1 if answer_cou..
-
[python] Codility Lesson 6-2. MaxProductOfThree공부/알고리즘 2021. 7. 27. 02:48
간단하게 풀었지만, 고민을 좀 많이 해보았다. element가 모두 - 일때? 0을 포함 하는 모든 - 일때? 모두 양수일때? 양수와 음수가 썪여 있을때? 음수 하나 이고 양수 나머지? A[0]*A[1]*A[-1] 와 A[-1]*A[-2]*A[-3] 의 비교로 모든 경우의 숫자가 커버된다. def solution(A): # write your code in Python 3.6 A.sort() answer = list() answer.append(A[0]*A[1]*A[-1]) answer.append(A[-1]*A[-2]*A[-3]) return max(answer)
-
[python] Codility Lesson 5-4. PassingCars공부/알고리즘 2021. 7. 27. 01:46
앞선 문제들과 비교해 비교적 빨리, 무난히 마음에 들게 잘 푼거 같다. def solution(A): # write your code in Python 3.6 sum = 0 east_car = 0 for i in range(len(A)): if A[i] == 0: east_car += 1 else: sum += 1 * east_car if sum > 1000000000: sum = -1 break return sum 1. 동쪽으로 가는 방향의 차량을 for문을 돌면서 만날때 마다 1씩 더해주자. 2. 서쪽으로 가는 방향의 차량을 for문을 돌면서 만날때 마다 sum에다 1 * east_car를 해주자. 3. 문제에서 주어진 예외를 처리해주자.
-
[python] Codility Lesson 5-3. MinAvgTwoSlice공부/알고리즘 2021. 7. 27. 01:05
1. for문 2개 돌려 O(N^2) 알고리즘이지만, 막상 그림이 안떠올라 작성해보았다. (60점, performance 0점) def solution(A): min_average = 99999 for i in range(len(A) - 1): sum = A[i] for j in range(i + 1, len(A)): sum += A[j] average = sum /(j-i+1) if min_average > average: min_average = average start_index = i return start_index 1. 최소값을 큰 수로 놓고, 첫번째 for문에서 0 부터 len(A) - 1 까지 즉, start_index 각각의 min_average를 구한다. 2. 두번째 for문에서 0-1..
-
[python] Codility Lesson 5-2. GenomicRangeQuery공부/알고리즘 2021. 7. 26. 18:49
1. 처음 보고 prefix-sum이 아닌 나만의 풀이로 도전했다가 performance점수에서 0을 받아 62점을 받았다. def solution(S, P, Q): # write your code in Python 3.6 # A C G T 1 2 3 4 answer_list = list() for j in range(len(P)): min_val = min(set(S[P[j]:Q[j]+1])) answer_list.append(min_val) return change_To_int(answer_list) def change_To_int(answer_list: list)->list: answer = list() for i in range(len(answer_list)): if answer_list[i] =..
-
[python] Codility Lesson 5-1. CountDiv공부/알고리즘 2021. 7. 26. 03:01
그냥 보자마자 반사적으로 아래와 같이 짜보았다. 문제 조건을 보니 아래와 같이 연산 낭비가 있으면 안될거 같긴했지만 그냥 제출해본 결과 50점을 받았다. 1. 그냥 한번 짜봄. def solution(A, B, K): # write your code in Python 3.6 answer = 0 for i in range(A,B+1): if i % K == 0: answer += 1 else: continue return answer codility lesson 문제를 풀며 해당 lesson의 제목에 대한 공부를 좀 진행하고 거기에 맞추어서 코드를 작성하기로 마음을 고쳐 먹었다. 진작에 이랬어야 됫는데, 그냥 무조건 풀수있다는 자신감으로 풀면 별 도움도 안되고 여튼 lesson 5부터 공부하며 풀어보자!!..
-
[python] Codility Lesson 4-4. PermCheck공부/알고리즘 2021. 7. 25. 22:40
이전 문제와 비슷한 초기 비교값 permutation_start 값을 1로 두고, 비교 및 카운팅을 통해서 무난하게 해결해 보았다. def solution(A): # write your code in Python 3.6 A.sort() permutation_start = 1 for val in A: if val == permutation_start: permutation_start += 1 else: return 0 return 1 1. list A를 sort()하자! 2. 초기 비교값 permutation_start 값을 1로 두고, 비교 및 카운팅을 통해서 permutation_start를 갱신해주자 3. 비교값이 sort된 list A 값과 다를 시 return 0, for 문의 검사가 끝났을때 r..