본문 바로가기

파이썬 관련 문법15

파이썬의 요소 추가 메서드 비교 파이썬에서는 자료구조마다 요소를 추가하는 메서드가 다릅니다.기본적인 내용이지만 그만큼 중요하므로 한 번 다루고 넘어가겠습니다.리스트(List)의 요소 추가 메서드append()기능: 리스트 끝에 단일 요소 추가합니다.my_list = ['apple', 'orange']my_list.append('banana')print(my_list) # ['apple', 'orange', 'banana']extend()기능: 리스트 끝에 반복 가능한(iterable) 모든 요소를 추가합니다.my_list = ['apple', 'orange']my_list.extend(['banana', 'grape'])print(my_list) # ['apple', 'orange', 'banana', 'grape']insert().. 2024. 12. 15.
단일 패스 탐색: 투 포인터 기법의 활용 투 포인터 기법은 두 개의 포인터를 조작하여 원하는 값을 찾거나 특정 조건을 만족하는 부분 배열을 찾을 때 사용합니다. 사용하는 방법이 많지만 결국 두 개의 포인터가 배열의 양 끝에서 시작하여 중앙으로 이동하거나, 같은 방향으로 이동하면서 모든 요소를 단 한 번씩만 검사한다는 특징이 있습니다. 양 끝에서 시작하여 중앙으로 이동하는 예제 중 주어진 배열에서 두 원소의 합이 target과 일치하는 쌍의 개수를 찾는 알고리즘으로 확인해 보겠습니다. 배열은 오름차순 정렬되어 있고 중복값은 없습니다.시작점(start)과 끝점(end) 두 개의 포인터를 설정합니다. 일반적으로 배열의 시작 위치에 두 포인터를 설정하지만 이 경우 배열의 처음과 끝에 포인터를 설정합니다.문제의 조건에 따라 두 포인터를 이동시킵니다.현재.. 2024. 12. 12.
병합 정렬 쉽게 배우기: 재귀 호출과 병합 과정을 시각적으로 따라가기 병합 정렬(Marge Sort)은 분할 정복 알고리즘에 기반한 정렬 알고리즘 중 하나로, 안정적이고 효율적인 정렬 방식입니다.이번 포스트에서는 앞에서 병합 정렬 코드에 대해 알아보고 뒤에서는 병합 정렬을 시각화한 글을 보고 병합 과정을 따라가 볼 것입니다. 일단 병합 정렬의 핵심 3가지를 알아보겠습니다.분할(Divide)배열(또는 리스트)을 절반씩 나눕니다.나누는 과정을 재귀적으로 반복하여, 크기가 1인 배열로 쪼갭니다.크기가 1인 배열은 이미 정렬된 상태라고 가정합니다.정복(Conquer)작은 두 배열을 비교하면서 정렬하여 병합(Marge)합니다.병합 과정에서 두 배열을 한 번에 순회하며, 각 리스트의 첫 번째 요소를 비교하여 더 작은 값을 새로운 리스트에 추가하는 방식으로 진행합니다.병합(Merge).. 2024. 12. 12.
파이썬의 양방향 큐, deque 사용법 파이썬의 deque(데크)는 양방향 큐를 구현한 자료구조로, collections 모듈의 클래스 중 하나입니다. deque의 특징은 양 끝에서 빠르게 요소를 추가하거나 제거할 수 있다는 점이 있습니다.양방향 접근: 앞과 뒤 양쪽에서 데이터 삽입과 삭제가 가능합니다.빠른 성능: 양 끝 요소에 대한 append와 pop연산의 시간 복잡도가 O(1)입니다.다양한 활용: 스택과 큐의 기능을 모두 사용할 수 있습니다.deque 사용법을 알아보겠습니다.초기화from collections import dequedq = deque() # 빈 deque 생성dq = deque([1, 2, 3]) # 리스트로 초기화collections 모듈에서 deque 클래스를 임포트 합니다. 참고로 collections 모듈은 파.. 2024. 12. 11.
Counter 클래스: 코딩 테스트를 위한 효율적인 요소 빈도 계산 도구 코딩 테스트 문제를 풀다 보면 문자열이나 배열의 요소 빈도 계산에 Counter라는 collections 모듈의 클래스를 사용하는 경우를 종종 확인할 수 있습니다. Counter 클래스의 주요 특징과 사용법에 대해 알아보도록 하겠습니다. 생성 예시 및 설명from collections import Counter# 문자열로부터 생성c1 = Counter('gallahad')print(c1) # Counter({'a': 3, 'l': 2, 'g': 1, 'h': 1, 'd': 1})# 리스트로부터 생성c2 = Counter(['red', 'blue', 'red', 'green', 'blue', 'blue'])print(c2) # Counter({'blue': 3, 'red': 2, 'green': 1}).. 2024. 12. 11.
이진 탐색이란 무엇인가? 이진 탐색이란 정렬된 배열에서 특정 값을 효율적으로 찾는 알고리즘입니다. 업다운 게임과 같은 원리를 가지고 있습니다. 이진 탐색의 원리이진 탐색은 아래와 같은 단계로 진행됩니다.배열의 중간 요소를 선택합니다.중간 요소와 찾고자 하는 값을 비교합니다.찾고자 하는 값이 중간 요소보다 작으면 왼쪽 부분 배열을, 크면 오른쪽 부분 배열을 대상으로 검색을 진행합니다.찾고자 하는 값을 찾거나 더 이상 검색할 수 없을 때까지 이 과정을 반복합니다.이 방법을 사용하면 매 단계마다 검색 범위가 거의 절반이 줄어들어 O(log n)의 시간 복잡도를 가집니다.    파이썬에서 이진 탐색은 주로 두 가지 방법으로 구현됩니다.반복문을 사용하는 방법과 재귀함수를 사용하는 방법입니다. 일단 반복문을 사용한 구현을 확인해보겠습니다... 2024. 12. 10.
ValueError를 피하는 방법: 두 코드의 결과 분석하기 아래 두 코드는 다른 결과값을 가진다는 사실, 알고 계셨습니까?N, M = list(map(int, input().split()))print(N, M) N, M = [map(int, input().split())]print(N, M) 이 두 표현식은 비슷해 보이지만 중요한 차이점이 있습니다. 애당초 실행 결과도 다르기에 실행 결과부터 확인해 보고 설명으로 넘어가겠습니다. 위 코드의 실행값입니다.2 4 아래 코드의 실행값입니다.ValueError: not enough values to unpack (expected 2, got 1) 두 코드의 실행값이 다르다는 것을 확인할 수 있습니다. 그럼 왜 이런 결과가 나오는지 살펴보겠습니다.N, M = list(map(int, input().split()))prin.. 2024. 12. 10.
파이썬의 구조분해 할당: 코드를 간결하고 강력하게 파이썬의 구조분해 할당(destructuring assignment)은 반복 가능한 객체(iterble - 리스트, 튜플 등)의 값을 여러 변수에 한 번에 할당할 수 있는 기능입니다. 이를 통해 코드를 더 간결하고 읽기 쉽게 만들 수 있습니다. 구조분해 할당의 기본 구문은 아래와 같습니다.변수1, 변수2, ... = 반복가능객체반복 가능한 객체이기 때문에 여러 변수에 할당이 가능합니다. 리스트와 튜플의 구조분해리스트나 튜플과 같은 시퀀스 타입(순서가 있는 데이터 구조를 나타내는 객체)에서도 구조분해 할당을 사용할 수 있습니다.numbers = [1, 2, 3]first, second, third = numbersprint(first) # 출력: 1print(second) # 출력: 2print(th.. 2024. 12. 10.
불변성이 가져오는 이점: 파이썬 튜플의 효율적인 메모리 관리 파이썬에서 튜플(Tuple)은 불변(immutable)한 시퀀스 자료형으로, 리스트와 유사하지만 몇 가지 중요한 차이점이 있습니다. 튜플의 사용과 메모리 최적화에 대해 자세히 알아보겠습니다. 튜플의 특징과 사용튜플은 소괄호 ()를 사용하여 생성하며, 요소들은 쉼표로 구분합니다.my_tuple = (1, 2, 3, 'a', 'b') 튜플의 주요 특징은 다음과 같습니다.불변성: 한 번 생성된 튜플은 변경할 수 없습니다.인덱싱과 슬라이스: 리스트와 마찬가지로 인덱싱과 슬라이싱이 가능합니다.패킹과 언패킹: 여러 값을 하나의 튜플로 묶거나 튜플의 요소를 개별 변수로 분리할 수 있습니다. 튜플과 메모리 최적화튜플은 리스트에 비해 메모리 사용량이 적고, 처리 속도가 빠르다는 장점이 있습니다. 왜 그런 걸까요?불변성:.. 2024. 12. 10.
코드를 간단하게 만드는 법: 파이썬 람다(lambda) 함수 파이썬으로 코딩 공부를 하다 보면 람다 함수를 많이 볼 수 있습니다.주로 코드를 간단하게 할 때 사용되는데요.파이썬에서의 람다 함수에 대해 간략히 알아보겠습니다. 람다 함수는 다음과 같은 구조를 가집니다.lambda arguments: expressionlambda: 람다 함수를 정의하는 키워드입니다.arguments: 함수의 인자입니다.(0개 이상)expression: 단일 표현식으로 함수의 반환값입니다.람다 함수는 일반 함수와 달리 이름이 없으며, 단일 표현식만을 포함할 수 있습니다. 이런 람다 함수의 특징으로는간결성: 람다 함수는 한 줄로 정의되어 코드를 간결하게 만듭니다.익명성: 이름이 없어 일회성으로 사용되는 경우가 많습니다.함수형 프로그래밍: 함수를 인자로 전달하고나 반환할 때 유용합니다.제한.. 2024. 12. 9.