본문 바로가기

반응형

조합

[코딩 테스트/Python] 코딩 테스트에서 자주 사용되는 Python 표준 라이브러리 코딩 테스트에서 자주 사용되는 알고리즘에는 해시(hash), 탐욕법(greedy), 정렬(sort), 동적 계획법(Dynamic Programming), 깊이 우선 탐색(DFS), 너비 우선 탐색(BFS) 등이 있다. 이 알고리즘들은 직접 구현할 수도 있지만, 그렇게 하기엔 코드도 너무 길어지고 시간이 오래 걸린다. 코딩 테스트에서 시간은 생각보다 여유 있지 않을 뿐더러, 각 알고리즘 별 직접 구현 코드를 늘 외우고 있기도 어렵다. 이럴 때 Python에서 제공하는 표준 라이브러리를 사용하면 각 알고리즘을 보다 쉽게 구현할 수 있다. 이 글에서는 각 알고리즘 별 표준 라이브러리를 사용해 구현하는 법을 간단히 정리하고자 한다.  1. 해시(hash)해시의 경우, 라이브러리를 따로 임포트하지 않고 기본 자료.. 더보기
[코딩테스트/Python] 프로그래머스 코딩테스트 - 사탕 담기 문제 설명 m 그램(gram)을 담을 수 있는 가방에 사탕을 가득 채우는 경우의 수를 구하려 합니다. 단, 같은 사탕은 또 넣을 수 없습니다. 가방이 감당할 수 있는 무게 m, 사탕별 무게가 담긴 배열 weights가 매개변수로 주어질 때, 가방을 정확히 m 그램으로 채우는 경우의 수를 return 하는 solution 함수를 작성해주세요. 제한 조건 m은 1,000 이상 100,000 이하인 자연수입니다. 모든 사탕의 무게는 10 이상 100,000 이하인 자연수입니다. weights의 길이는 3 이상 15 이하입니다.입출력 예 문제 풀이# itertools의 combinations 이용 (파이썬 기본 라이브러리)from itertools import combinationsdef solution(m, .. 더보기
[CS/Python] 자료구조 & 알고리즘 정리 - 선형 배열, 정렬, 탐색, 재귀, 순열 자료구조는 왜 알아야 하는가?ex) 리스트 내 최대값을 max() 함수를 통해 알아내고자 한다면, 리스트 전체 원소를 하나씩 읽어 비교하는 수 밖에 없다.즉, 위의 예시의 경우 리스트의 크기가 커질수록 시간은 비례적으로 많이 걸릴 수 밖에 없다는 뜻이다. 이런 경우 자료구조를 잘 활용한다면, 낭비되는 시간을 획기적으로 줄일 수 있다. 알고리즘이란? 프로그래밍에서의 알고리즘은 주어진 문제의 해결을 위한 자료구조와 연산 방법에 대한 선택을 뜻한다. 같은 문제가 주어지더라도 어떤 자료구조와 연산 방법을 사용하느냐에 따라 효율성의 크기가 달라질 수 있다. 자료구조와 알고리즘이 깊은 관계를 가지고 있는 것도 이런 이유 때문이다. 알고리즘의 '선택'에는 자료구조에 대한 이해가 필수적이다.  선형 배열 (Linear.. 더보기

728x90