문제 https://app.codility.com/programmers/lessons/9-maximum_slice_problem/max_profit/ MaxProfit coding task - Learn to Code - Codility Given a log of stock prices compute the maximum possible earning. app.codility.com 문제 풀이 리스트의 값 들은 주식의 가격을 나타내고, 인덱스는 날짜이다. 주식을 산 후에 특정 날짜에 판매하였을 때 가장 큰 이득을 반환하면 된다. 이득이 없는 경우(마이너스) 에는 0을 반환한다. 코드 def solution(A): if len(A) < 2: return 0 max_profit = None min_price..
문제 https://app.codility.com/programmers/lessons/8-leader/equi_leader/ EquiLeader coding task - Learn to Code - Codility Find the index S such that the leaders of the sequences A[0], A[1], ..., A[S] and A[S + 1], A[S + 2], ..., A[N - 1] are the same. app.codility.com 문제 풀이 Dominator 문제와는 다르게, 각 구간 별로 left, right의 leader가 일치하는지 확인하는 문제이다. 주어진 예시의 경우 4, 3, 4, 4, 4, 2이다. 리스트의 앞에서 부터 구간을 left, right로..
문제 https://app.codility.com/programmers/lessons/8-leader/dominator/ Dominator coding task - Learn to Code - Codility Find an index of an array such that its value occurs at more than half of indices in the array. app.codility.com 문제 풀이 리스트의 값 들 중, 하나의 수가 리스트 길이의 절반 이상을 차지하면 dominator가 되고, 해당하는 수의 배열내 인덱스 중 아무 값이나 반환하면 되는 문제이다. 코드 def solution(A): cnt = {} length = len(A) if not length: return -1..
문제 코딩테스트 연습 - 위장 programmers.co.kr 문제 풀이 위장 할 수 있는 물건의 가지수에 따라 경우의 수를 구하는 문제이다. Counter를 이용하여 경우의 수를 쉽게 구할 수 있다. 코드 from collections import Counter def solution(clothes): answer = 1 kinds = Counter([kind for _, kind in clothes]) nums = [x for x in kinds.values()] for num in nums: answer *= num + 1 return answer - 1 인자로 주어지는 clothes 에서 종류를 Counter를 사용하여 카운트 한다. 물건의 종류에 따라 (종류1 + 1) * (종류2 + 1) ....
문제 https://app.codility.com/programmers/lessons/7-stacks_and_queues/stone_wall/ StoneWall coding task - Learn to Code - Codility Cover "Manhattan skyline" using the minimum number of rectangles. app.codility.com 문제 풀이 각 돌의 높이가 주어지고, 돌담을 구성하기 위한 최소의 돌의 개수를 구하는 문제이다. stack을 이용하여, stack[-1]의 값이 현재 돌의 높이 보다 낮으면 기준을 현재로 변경한다. stack[-1]이 현재 돌의 높이보다 높으면 카운트를 증가하고 스택에 추가하고 반대일 경우 높이가 클 때까지 stack.pop() 을..
문제 https://app.codility.com/programmers/lessons/7-stacks_and_queues/nesting/ Nesting coding task - Learn to Code - Codility Determine whether a given string of parentheses (single type) is properly nested. app.codility.com 문제 풀이 brackets 문제와 동일한 방식으로 접근하면 된다. 괄호의 종류가 하나로 변경된 문제이다. 코드
문제 https://app.codility.com/programmers/lessons/7-stacks_and_queues/fish/ Fish coding task - Learn to Code - Codility N voracious fish are moving along a river. Calculate how many fish are alive. app.codility.com 문제 풀이 서로 다른 방향으로 물고기가 만나는 경우, 크기가 큰 물고기가 작은 물고기를 잡아먹는다. 이를 위해 하류로 가는 물고기를 stack에 담고, 하류로 가는 물고기들과 만나면 크기를 비교하여 물고기를 제거한다. 같은 방향으로 향하는 물고기들은, 속도가 같기에 만날 수 없다는 제한 조건을 가지고 있다. 코드 def solut..
문제 https://app.codility.com/programmers/lessons/7-stacks_and_queues/brackets/ Brackets coding task - Learn to Code - Codility Determine whether a given string of parentheses (multiple types) is properly nested. app.codility.com 문제 풀이 괄호가 올바른 쌍을 이루는지 확인하는 문제다. 예를 들어 ({)} 이면 올바른 괄호 쌍 이지만 (}){ 일 경우 올바른 괄호 쌍이 아니다. 코드 def solution(S): stack = [] opens = ('{', '[', '(') close = ('}', ']', ')') for cha..