파이썬 76

[리트코드/leetcode/python] 560. Subarray Sum Equals K

오늘은 누적합과 관련한 SubArray의 수를 구하는 문제를 가져와봤습니다. 문제는 짧지만 구현하기는 쉽지 않습니다. 문제 이해부터 해보겠습니다. 주어진 정수 배열 'nums'와 정수 'k'가 있을 때, 합이 'k'와 같은 연속된 부분 배열의 개수를 찾는 것이 이 문제의 목표입니다. 예를 들어, num = [1,2,-1,3] 이고 , k = 2 인 경우에는 두 개의 부분 배열 [1,2,-1] 과 [2] 가 목표 합을 만족합니다. 즉 답은 2가 됩니다. 이 문제를 봤을 때 뭔가 누적합을 이용한 풀이를 생각할 수 있습니다. 하지만, 제한 조건을 봤을 때 시간복잡도도 고려해야 문제를 통과할 수 있을 것 같습니다. 또, 주어진 배열에서 연속된 부분 배열 중 합이 k인 경우의 수를 찾는 것이 핵심인데, 여기서 배..

[리트코드/leetcode/python] 380. Insert Delete GetRandom O(1)

오늘은 자료구조 설계에 대한 흥미로운 문제를 가져왔습니다. 겉으로 봤을 때는 해당 문제가 쉽게 풀릴 것입니다. 즉, O(1)이 아니고서는 문제 구현이 쉬울 것 입니다. 하지만, 이 문제에서는 O(1)의 시간 복잡도로 요소를 삽입, 삭제 및 무작위로 가져오는 자료 구조를 구현하는 것이 핵심입니다. 저는 이 문제를 처음 시도했을 때, 파이썬의 'set'자료구조를 사용했습니다. 'set'을 사용하면 삽입과 삭제는 평균적으로 O(1)의 시간 복잡도를 가지기 때문이죠.(자세한 이유는 이 링크를 참조하세요) 하지만, 문제는 getRandom() 메소드에 있었습니다. rand()와 같은 함수는 해시 집합에서 사용할 수 없기 때문에, 'set'을 'list'로 변환하는 과정이 필요합니다. 이 때, O(n) 시간이 걸리..

[코테] 코딩 테스트 합격자 되기 2주차 - 스택

스택의 어원은 '쌓는다' 입니다. 어원에서 짐작할 수 있듯이, 먼저 입력한 데이터를 제일 나중에 꺼낼 수 있는 자료구조입니다. 이렇게 먼저 들어간 것이 마지막에 나오는 규칙을 후입선출 혹인 LIFO(Last IN First Out)이라고 합니다. 이 때, 스택에 삽입하는 연산을 push, 꺼내는 연산을 pop 이라고 합니다. 📖 스택의 동작 원리 이해하기 빈 통(빈 스택)에 사탕을 넣는다고 하면, 아래와 같이 나타낼 수 있습니다. 📖 스택의 ADT ADT는 우리말로 추상 자료형(abstract data type)인데요, 추상 자료형이란 인터페이스만 있고 실제로 구현은 되지 않은 자료형입니다. 일종의 자료형의 설계도라고 생각하면 됩니다. 그렇다면 스택은 어떤 정의가 필요한 자료구조일까요? 우선 스택에는 ..

[코테] 코딩 테스트 합격자 되기 2주차 - 배열

배열은 인덱스와 값을 일대일 대응에 관리하는 자료구조입니다. 데이터를 저장할 수 있는 모든 공간은 인덱스와 일대일 대응하므로 어떤 위치에 있는 데이터든 한 번에 접근할 수 있습니다. 데이터에 한 번에 접근할 수 있으니 어디에 있는지만 알면 빠르게 탐색할 수 있는 것이죠. 이런 접근 방식을 임의 접근(random access)라고 합니다. 📖 배열 선언 배열을 선언하는 방법은 다음과 같습니다. 이름이 arr 이고 길이가 8인 정수형 배열을 리스트를 활용해서 선언하는 3가지 방법을 예제를 통해서 알아보겠습니다. 1) 일반적인 방법 arr = [0,0,0,0,0,0,0,0] arr = [0] * 8 # 결과는 둘 다 동일합니다. 2) 리스트 생성자를 사용하는 방법 arr = list(range(8)) # [0..

What is "self" in Python?

파이썬 코드를 짤 때, 언제 self 를 써야하고, self의 적용범위가 어디까지인지 이런 개념을 완벽히 잘 모르고 그냥 감으로 self 를 짠 경우가 있을 것이다. 나도 디버깅을 하면서 self 를 붙일지 말지 찾아내곤 하는데, self 에 대해서 자세하고 정확한 예시 등으로 개념을 바로 잡아보자! Python 에서 클래스를 정의하고 객체지향 프로그래밍을 할 때, 'self' 는 클래스의 인스턴스를 가리키는 변수이다. 클래스의 메소드는 첫 번째 매개변수로 항상 "self"를 받아, 그 인스턴스의 속성과 다른 메소드에 접근할 수 있게 하는 것이다. ※ 'self'의 역할과 사용법 1. 인스턴스 참조 'self'는 클래스의 현재 인스턴스를 참조한다. 클래스 내부에서 'self'를 사용하면, 그 클래스의 다..

[코테] 코딩 테스트 합격자 되기 1주차 - 코딩 테스트 필수 문법

이번 포스팅에서는 파이썬 기초 문법을 충실히 설명하기보다는 코딩 테스트에 자주 사용하는 문법을 설명하는 데 집중합니다. 📖 빌트인 데이터 타입? 빌트인 데이터 타입(built-in data type)은 언어 자체에서 제공하는 데이터 타입과 컬렉션 데이터 타입이 있습니다. 기본 데이터 타입으로는 정수형(Int), 부동소수형(Float), 문자열 타입이 있고 컬렉션 데이터 타입으로는 리스트, 튜플, 셋, 딕셔너리 등이 있습니다. 1) 정수형 - 정수형은 양과 음의 정수, 0을 포함합니다. 여러가지 연산을 할 수 있죠. - 정수형 변수 선언 a = 13 b = 4 - 정수형 산술 연산 print(a+b) # 더하기 17 print(a-b) # 빼기 9 print(a*b) # 곱하기 52 print(a/b) #..

반응형