본문 바로가기

~2023/Codility

Codility - MaxSliceSum 문제풀이 이건 그냥 조건문으로 푼거같긴 한데, 그래도 구글링 안하고 풀긴 풀었다. 오예! 시간 복잡도: O(N) --> 100%의 정답률 # you can write to stdout for debugging purposes, e.g. # print("this is a debug message") def solution(A): # write your code in Python 3.6 #A #[3][2][-6][4][0] if len(A) == 1: return A[0] front_sum = [0]*len(A) back_sum = [0]*len(A) current_sum = 0 for i in range(len(A)): if A[i] + current_sum > 0: front_sum[i] = A[i] + curr.. 더보기
Codility - MaxProfit 문제풀이 차분하게 이해하려고 노력하니 풀린다!! 시간 복잡도: O(N) --> 100%의 정답률 # you can write to stdout for debugging purposes, e.g. # print("this is a debug message") def solution(A): # write your code in Python 3.6 #A #23171 21011 21123 21366 21013 21367 #A = [21011,23423,24333,14235,40293,23102] if len(A) < 2: return 0 max_sorted_arr = [0]*len(A) min_sorted_arr = [0]*len(A) min_value = A[0] max_value = A[-1] for i in ran.. 더보기
Codility - MaxDoubleSliceSum 문제풀이 생각이 잘 안나서, 구글링 했다. 시간 복잡도: O(N) --> 100%의 정답률 # you can write to stdout for debugging purposes, e.g. # print("this is a debug message") def solution(A): # write your code in Python 3.6 l_max_slice_sum = [0]*len(A) r_max_slice_sum = [0]*len(A) for i in range(1,len(A)-2): l_max_slice_sum[i] = max(l_max_slice_sum[i-1]+A[i],0) for i in range(len(A)-2,1,-1): r_max_slice_sum[i] = max(r_max_slice_sum[i.. 더보기
Codility - EquiLeader 문제풀이 시간 복잡도: O(N) --> 100%의 정답률 # you can write to stdout for debugging purposes, e.g. # print("this is a debug message") def solution(A): # write your code in Python 3.6 right_map = {} left_map = {} for i in A: try: right_map[i] += 1 except: right_map[i] = 1 count = 0 left_leader = 0 left_length = 0 right_length = len(A) left_leader_count = 0 for i in range(len(A)): right_map[A[i]] -= 1 right_length.. 더보기
Codility - StoneWall 시간 복잡도: O(N) --> 100%의 정답률 # you can write to stdout for debugging purposes, e.g. # print("this is a debug message") def solution(H): # write your code in Python 3.6 block_cnt = 0 stack_arr = [] for i in range(len(H)): while len(stack_arr) > 0 and stack_arr[-1] > H[i]: stack_arr.pop() if len(stack_arr) == 0 or stack_arr[-1] < H[i]: block_cnt += 1 stack_arr.append(H[i]) return block_cnt pass 내가 풀.. 더보기
Codility - Nesting 문제풀이 아래는 시간복잡도 O(N)의 100% 정답코드다 한번에 100%의 정답을 맞칠 수 있어서, 너무 기분이 좋다~~~!! # you can write to stdout for debugging purposes, e.g. # print("this is a debug message") def solution(S): # write your code in Python 3.6 arr = [] for i in range(len(S)): if S[i] == '(': arr.append(S[i]) else: if len(arr) != 0 and arr[-1] == '(': del arr[-1] else: arr.append(S[i]) if len(arr) == 0: return 1 else: return 0 pass 파이.. 더보기
Codility - Fish 물고기가 위 또는 아래 방향으로 헤엄치고 있는데, 물고기의 사이즈에 따라서 크기가 큰 물고기가 작은 물고기와 충돌할때, 잡아먹게 되면!! 총 몇마리의 물고기가 남는지를 물어보는 문제다 # you can write to stdout for debugging purposes, e.g. # print("this is a debug message") def solution(A, B): # write your code in Python 3.6 if len(A) == 1: return 1 arr = [] for i in range(len(A)): arr.append((A[i],B[i])) arr_ = [] arr_.append(arr[0]) for i in range(1,len(arr)): # 충돌하면 while(.. 더보기
Codility - Brackets 이 문제는 잘만 풀면 한큐에 끝낼 수 있는 문제이다. 그러나 조건에 다양한 예외처리를 신경써주어야 한다. 그렇지 않으면, 중간에 Runtime Error가 발생한다ㅜㅜㅜ 시간 복잡도: O(N) --> 100%의 정답률 # you can write to stdout for debugging purposes, e.g. # print("this is a debug message") def solution(S): # write your code in Python 3.6 if len(S) == 0: return 1 arr = [] for i in S: if i == "{": arr.append(3) elif i == "[": arr.append(2) elif i == "(": arr.append(1) elif i.. 더보기