본문 바로가기

전체 글46

[Python3] dict의 다양한 생성방법과 zip() 함수 딕셔너리의 다양한 생성 방법과 zip() 함수를 이해해보자. 1. 딕셔너리의 기본적인 생성 방법은 다음과 같다. >>> d = {'a' : 1, 'b': 2, 'c': 3} >>> d {'a': 1, 'b': 2, 'c': 3} 2. dict() 함수를 이용하는 방법 >>> d = dict([('a', 1), ('b', 2), ('c', 3)]) >>> d {'a': 1, 'b': 2, 'c': 3} 3. 키가 문자열인 경우 딕셔너리를 생성하는 방법 >>> d = dict(a=1, b=2, c=3) >>> d {'a': 1, 'b': 2, 'c': 3} 4. zip() 함수를 이용하는 방법 >>> d = dict(zip(['a', 'b', 'c'], [1, 2, 3])) >>> d {'a': 1, 'b'.. 2021. 2. 10.
[Python3] 문자열 관련 함수 총정리! 파이썬을 이용하여 알고리즘 문제 풀이를 하고 있다면 문자열 처리와 관련해서 파이썬은 상당한 이점을 가지고 있다. C/C++, JAVA 등의 기타 언어와는 다르게 문자열 관련 함수가 상당히 많고 다양하다. 이를 활용하는 것은 알고리즘 문제 풀이에 있어서 아주 강력한 도구가 된다고 생각한다. 아주 일부분이겠지만 말이다ㅠㅠ 몇 개 없는 함수 모두 정리해보는 시간을 가져보자!! 여기서 한 가지 개념적으로 알아야 할 것은 Python에서 문자열은 불변 객체이므로 기존의 문자열을 수정 한 객체를 반환하는 것이 아닌 새로운 객체를 생성하고 반환한다는 것이다. (여기서 객체라고 하면 문자열이다.) 1. capitalize() 문자열의 첫 번째 문자를 대문자로 바꾸고 나머지 문자에 대해서는 소문자로 변환한 문자열을 반환.. 2021. 2. 9.
[Python] 비트 연산 [Python] 비트 연산 Python3 비트 연산이 C/C++과는 조금 차이가 있는 것 같아서 비트 연산자에 대해서 다루어 보려고 한다. 다음과 같은 명령문이 있을 때 출력 결과를 살펴보도록 하자. >>> bin(0b0101 ^ ~0b1100) '-0b1010' 반환 값은 문자열이며 bin 함수를 통해서 2진수로 출력되었다. 또한 앞에 - 부호가 들어간 것을 알 수 있다. 크기는 10이다. 나는 처음 결과를 생각하기를 ~0b1100 은 0b0011이 되겠거니 생각을 해서 (0b0101 ^ 0b0011) XOR 연산 결과 '0b0110' 라고 단순히 생각을 했다. 보기와 다르게 결과는 그렇지 않다. 그렇다면 어디가 잘못된 것일까? ~연산자를 이해하기 위해서는 2의 보수를 이해하고 있어야 한다. 잠시 다음.. 2021. 2. 6.
[Python] 딕셔너리 모듈 [Python] 딕셔너리 모듈 딕셔너리와 관련된 특수한 컨테이너 자료형인 defaultdict, Counter, OrderedDict에 대해 알아보자. 추가로 딕셔너리의 내장 함수인 setdefault() 함수에 대해서도 알아보자. dict = {'a' : 1, 'b' : 2, 'c': 3} dict --------------------------------- {'a': 1, 'b': 2, 'c': 3} dict['c'] += 1 dict['d'] += 1 ## 해당 키가 존재 하지 않으면 예외가 발생한다. --------------------------------------------------------------------------- KeyError Traceback (most recent cal.. 2020. 12. 31.
[Anaconda, Jupyter] graphviz 설치 방법 [Anaconda, Jupyter] graphviz 설치 방법 (Windows 10) 결정트리 모델을 시각화 하기 위해서는 Graphviz 패키지를 사용합니다. 코랩을 사용하신다면 별도의 설치 과정이 필요 없지만 주피터 노트북(Jupyter Notebook)을 사용하시는 유저라면 설치 방법이 조금 까다롭고 절차대로 설치를 진행했지만 제대로 동작되지 않는 경우가 많아서 저와 같이 해매는 분들이 많지 않을까 싶어서 정리해서 올려봅니다. (물론 Windows 10 사용자를 위한 것입니다. ㅠ) 1. Anaconda3 prompt에서 명령어 입력 위와 같이 Anaconde prompt를 실행 한 뒤 두 개의 명령어 모두 입력하시는 것을 권장 드립니다. 위의 방식은 라이브러리 파일이 설치 되는 공간이 달라질 수도.. 2020. 12. 29.
[Python] map & filter [Python] map & filter 사용법 map map 함수를 모른다고 가정하고 리스트 a의 값들을 각각 곱하기 2를 하여 리스트를 생성하고자 한다면 밑에 코드와 같은 방법을 사용하거나 혹은 반복문을 이용하여 리스트를 만들 것이다. def mul(n): return n * 2 a = [1, 2, 3, 4, 5] b = [mul(a[0]), mul(a[0]), mul(a[0]), mul(a[0]), mul(a[0])] # 2 4 6 8 10 하지만 map 함수를 이용하면 아주 간단하게 생성할 수가 있다. def mul(n): return n * 2 a = [1, 2, 3, 4, 5] b = list(map(mul, a)) # [2, 4, 6, 8, 10] cs 이렇게 a의 값들을 모두 mul 함수에 .. 2020. 8. 14.
[C++ STL] map 사용법 [C++ STL] map 기본적인 사용법 [C++ STL]에서 연관 컨테이너 중 하나인 map에 대해서 기본적인 사용법을 알아보도록 하겠습니다. map의 자료구조는 트리로 구성되어 있습니다. 정확히 말하면 레드 블랙 트리입니다. 레드 블랙 트리는 자가 균형 이진 탐색 트리로써 삽입과 삭제가 일어나는 경우에 자동으로 그 높이를 작게 유지하는 이진 탐색 트리입니다. 높이를 작게 유지하는 이유는 연산 과정에서 트리의 높이가 한쪽으로 치우치는 것을 막기 위함입니다. 이는 시간복잡도와 관련이 있습니다. 트리에 n개의 원소가 있을 때 O(log n)의 시간 복잡도로 삽입, 삭제, 검색을 할 수 있다. *(문자열의 경우는 예외 문자열의 길이를 고려해줘야 함) 1. 기본적인 형태 : map map의 기본적인 형태는 위.. 2020. 7. 27.
[탐색 알고리즘] lower_bound, upper_bound [탐색 알고리즘] lower_bound, upper_bound lower_bound, upper_bound는 기본적으로 이진 탐색을 기반으로 하기 때문에 탐색하고자 하는 수열(원소들)이 오름차순으로 정렬되어 있어야 합니다. 이렇게 정렬된 리스트에서 특정 값 위치를 찾을 때 사용합니다. 그렇다면 특정 값이 무엇인지 밑에 설명을 보시면 알 수 있습니다. 1. lower_bound : 크거나 같은 수 중에서 첫 번째 수 (특정값) 2에 대한 lower_bound 즉 , 2와 같거나 큰 수중 가장 작은 인덱스를 찾고자 한다면 그림에서 보이는 바와 같이 1번 째입니다. [소스 코드] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 #include using n.. 2020. 7. 18.
[프로그래머스] 단어변환 문제 : 단어 변환 [ 문제 출처 ] https://programmers.co.kr/learn/courses/30/lessons/43163 [문제 풀이] 이 문제의 경우 주어진 문제를 그래프로 표현할 수 있어야 한다 즉 "그래프 모델링"을 해주어야 한다 어떤 것을 그래프의 정점으로 사용할 것이고 정점과 정점을 잇는 간선의 연결은 어떻게 정할 것인지 등이 있다 이 문제의 그래프 모델링 과정을 살펴보자! 정점은 어떤 것으로 사용해야 할 까? words에 있는 단어로 하면 좋지 않을까? 정점과 정점을 잇는 간선은 어떻게 연결시켜야 할까? 알파벳을 단 한 개만 바꾸어 해당 단어로 표현할 수 있다면 이는 연결 되었다고 볼 수 있다 즉 "hot" --> "hit" , "hot" --> "dot" 알파벳 차이가 단 .. 2020. 6. 17.