프로그래밍 언어

프로그래밍 언어/Python

[Python] 순열, 조합 구현하기 - itertools & recursion

1. itertools를 이용한 방법 파이썬에 내장된 itertools패키지의 combinations모듈과 permutations모듈을 통해 손쉽게 순열과 조합을 구할 수 있다. 이때, 만들어진 순열과 조합은 튜플의 형태로 리스트에 담겨서 반환된다. -> ([(0, 1, 2), ...]) 조합 from itertools import combinations arr = [0, 1, 2, 3, 4, 5] print(list(combinations(arr, 3))) 순열 from itertools import permutations arr = [0, 1, 2, 3, 4, 5] print(list(permutations(arr, 3))) 2. 재귀를 이용한 방법 재귀를 이용해서 조합과 순열을 구할 수 있다. 기본..

프로그래밍 언어/JavaScript + TypeScript

[JavaScript] 변수 선언: const, let, var 차이

const const는 블록의 문맥 내에서 재할당할 수 없는 변수 선언이다. 즉, 한 번 선언하면 변경할 수 없다. 그러나 const에 할당된 값이 불변값이 되지는 않는다. 변수를 재할당할 수는 없지만, 값을 바꿀 수는 있다. 다음 예제를 보자. const로 선언한 배열(discountable)에 원소를 추가할 수 있다. const discountable = []; ... for (let i = 0; i < cart.length; i++) { if (cart[i].discountAvailable) { discountable.push(cart[i]); } } const를 통한 변수 선언의 장점을 살리기 위해선 조작(mutation)을 피하는 것이 좋다. 이를 조작이 없는 코드로 변경하면 다음과 같다. co..

프로그래밍 언어/Python

[Python] 파이썬 커스텀 정렬 - sort(), sorted()

파이썬은 정렬 함수를 기본으로 제공한다. sort()와 sorted()의 차이를 살펴보고 key 매개변수와 lambda 함수를 활용한 커스텀 정렬을 살펴본다. 1) Sort() vs Sorted() sort() .sort([key = ], [reverse = True|False]) 리스트 자료형에서만 사용 가능하다. 원래의 리스트가 변경된다(in-place). 아무것도 반환하지 않는다(None 리턴). 리스트를 정렬할 땐 sorted()보다 빠르다. reverse 매개변수로 True를 전달하면 내림차순 정렬할 수 있다. sorted() sorted(, [key = ], [reverse = True|False]) 모든 iterable한 객체에서 사용 가능하다. 원래의 리스트는 변화가 없다. 정렬된 새로운 ..

프로그래밍 언어/Python

[Python] 리스트 순회 중 변경이 필요할 때

리스트을 순회하는 과정에서 데이터를 변경하다가 에러가 나는 경우는 굉장히 잦다. 특히 그 중에서 삭제는 가장 까다롭다. 이때, 리스트 표현식과 슬라이싱을 활용하여 데이터를 변경할 수 있다. 문제 예제 lost = [2,4]; reserve = [1,2,5] for i in range(len(reserve)): if reserve[i] in lost: del reserve[i] print(reserve) ''' Traceback (most recent call last): File "main.py", line 3, in if reserve[i] in lost: IndexError: list index out of range ''' 해결방법 리스트 표현식(List Comprehension) + 슬라이싱 lo..

프로그래밍 언어/Python

[Python] 파이썬 기본 연산 시간복잡도(Big-O)

알고리즘 문제들을 풀 땐 시간복잡도와 공간복잡도가 중요하다. 그 중 파이썬에서 자주 쓰이는 연산들의 시간복잡도를 자료형에 따라 정리했다. 리스트(List) Operation Example Complexity Notes Index l[i] O(1) Store l[i] = 0 O(1) Length len(l) O(1) Append l.append(5) O(1) Pop l.pop() O(1) same as l.pop(-1), popping at end Clear l.clear() O(1) similar to l = [] Slice l[a:b] O(b-a) l[1:5]:O(l)/l[:]:O(len(l)-0)=O(N) Extend l.extend(...) O(len(...)) depends only on len ..

코택
'프로그래밍 언어' 카테고리의 글 목록 (9 Page)