전체 446

[파이썬 알고리즘 인터뷰][배열] 자신을 제외한 배열의 곱

이 글은 "파이썬 알고리즘 인터뷰 (박상길 지음)"을 읽고 주관적으로 요약한 글입니다. 문제 정의 배열을 입력받아 output[i]가 자신을 제외한 나머지 모든 요소의 곱셈 결과가 되도록 출력 책에서 구현된 코드 def productExceptSelf(self, nums: list[int]): out = [] p = 1 for i in range(0, len(nums)): out.append(p) p = p * nums[i] p = 1 for i in range(len(nums)-1, -1, -1): out[i] = out[i] * p p = p * nums[i] return out 기억해야할 기법 공간 복잡도를 더 줄이는 방식을 고려 사용할 필요가 없는 공간을 고민할 것 내가 구현한 코드 def pro..

책읽기 2021.07.19

[파이썬 알고리즘 인터뷰][배열] 배열 파티션1

이 글은 "파이썬 알고리즘 인터뷰 (박상길 지음)"을 읽고 주관적으로 요약한 글입니다. 문제 정의 n개의 페어를 이용한 min(a, b)의 합으로 만들 수 있는 가장 큰 수를 출력 책에서 구현된 코드 def arrayPairSum(self, nums: list[int]) -> int: return sum(sorted(nums)[::2]) 내가 구현한 코드 def array_part_one(nums: list[int]) -> int: nums.sort() return sum(nums[::2]) 리트코드 제출시 두 코드가 메모리에서 차이 0.1 MB 차이로 90%와 34%라는 큰 차이를 보임 그런데 왜 새로운 객체를 생성하는 sorted가 in-place sort보다 메모리를 적게 소비하지? 속도도 똑같음 ..

책읽기 2021.07.19

[파이썬 알고리즘 인터뷰][배열] 세 수의 합 (중요)

이 글은 "파이썬 알고리즘 인터뷰 (박상길 지음)"을 읽고 주관적으로 요약한 글입니다. 문제 정의 합을 0으로 만드는 3개 엘리먼트 모두 출력 책에서 구현된 코드 def threeSum(self, nums: list[int]) -> list[list[int]]: results = [] nums.sort() for i in range(len(nums)-2): if i > 0 and nums[i] == nums[i-1]: continue left, right = i+1, len(nums)-1 while left 0: right -= 1 else: result.a..

책읽기 2021.07.19

[파이썬 알고리즘 인터뷰][배열] 빗물 트래핑 (중요)

이 글은 "파이썬 알고리즘 인터뷰 (박상길 지음)"을 읽고 주관적으로 요약한 글입니다. 문제 정의 높이에 따라 쌓일 수 있는 물의 총계 계산 책에서 구현된 코드 def trap(self, height: list[int]) -> int: if not height: return 0 volume = 0 left, right = 0, len(height) - 1 left_max, right_max = height[left], height[right] while left < right: left_max, right_max = max(height[left], left_max), max(height[right], right_max) if left_max int: stack = [] volume = 0 for i in..

책읽기 2021.07.19

[파이썬 알고리즘 인터뷰][배열] 두 수의 합

이 글은 "파이썬 알고리즘 인터뷰 (박상길 지음)"을 읽고 주관적으로 요약한 글입니다. 문제 정의 덧셈으로 타겟을 만들 수 있는 배열의 두 숫자 인덱스를 리턴 책에서 구현된 코드 def twoSum(self, nums: List[int], taregt: int) -> List[int]: nums_map = {} for i, num in enumerate(nums): if target - num in nums_map: return [nums_map[target - num], i] nums_map[num] = i 기억해야할 기법 enumerate test = [1,2,3] list(enumerate(test)) # [(0, 1), (1, 2), (2, 3)] in dict()시 key를 기준 test = {..

책읽기 2021.07.18

[파이썬 알고리즘 인터뷰] 7장 - 배열

이 글은 "파이썬 알고리즘 인터뷰 (박상길 지음)"을 읽고 주관적으로 요약한 글입니다. 7장 배열 정의 값 또는 변수 엘리먼트의 집합으로 구성된 구조 하나 이상의 인덱스 또는 키로 식별 연속 방식 자료구조는 연속 방식과 포인터 기반 연결 방식으로 나뉨 배열은 연속 방식 요소의 주소가 연속적인 값으로 연결된 형태 추상 자료형 (ADT)의 실제 구현은 대부분 배열 또는 연결 리스트를 기반 - ex) 스택을 연결 리스트로 구현, 큐를 배열로 구현 C언어 기준의 배열 크기를 지정하고, 해당 크기만큼 연속된 메모리 공간을 할당 받는 자료형 생성 후 크기를 변경할 수 없음 (크기 고정) 어느 위치나 O(1)에 조회가 가능하다는 장점 동적 배열 전체 데이터 크기를 미리 가늠하기 어려움 크기를 지정하지 않고 자동 re..

책읽기 2021.07.18

[파이썬 알고리즘 인터뷰][문자열] 가장 긴 팰린드롬 부분 문자열

이 글은 "파이썬 알고리즘 인터뷰 (박상길 지음)"을 읽고 주관적으로 요약한 글입니다. 책에서 구현된 코드 def longestPalindrome(self, s:str) -> str: def expand(left: int, right: int) -> str: while left >= 0 and right < len(s) and s[left] == s[right]: left -= 1 right += 1 return s[left+1:right] if len(s) < 2 or s == s[::-1]: return s result = '' for i in range(len(s)-1): result = max(result, expand(i, i+1), expand(i, i+2), key=len) return re..

책읽기 2021.07.18

[데이터 분석을 위한 SQL 레시피][2장] 이 책에서 다루는 도구와 데이터

이 글은 "데이터분석을 위한 SQL 레시피 (가사키 나가토, 다미야 나오토 지음)"을 읽고 주관적으로 작성된 글입니다. 1. 시스템 1) PostgreSQL 오픈소스 RDB MySQL등 다른 오픈소스 RDB에 비해 표준 SQL을 잘 준수하고 있음 윈도 함수, CTE(WITH 구문) 등 분석에 필수적으로 사용하는 구문을 모두 구현 특유의 확장 기능을 많이 제공하여 편리함 소규모 데이터 분석 / SQL 학습 목적으로 사용 2) Apache Hive 대용량 데이터에 대한 RDBMS의 한계(bottle neck) 빅데이터 시스템에서는 일반적으로 저렴한 디스크를 사용 따라서, 디스크의 데이터 I/O 속도와 CPU의 처리 속도의 gap이 큼 이를 위한 아키텍처로 분산 파일 시스템이 고안됨 Apache Hive HD..

책읽기 2021.07.18

[쉽게 배우는 운영체제](요약)[Part-1][Ch-2] 컴퓨터의 구조와 성능 향상

이 글은 "쉽게 배우는 운영체제 (조성호 지음)"을 읽고 주관적으로 작성된 글입니다. ※ 요약 하드웨어의 구성 CPU / 메인메모리 / 입력장치 /출력장치 / 저장장치 필수장치 - CPU / 메인메모리 - 컴퓨터로 하는 작업은 대부분 CPU와 메인메모리의 협업으로 이루어짐 나머지는 주변장치 폰노이만 구조 CPU, 메모리, 입출력장치, 저장장치가 버스로 연결되어 있는 구조 모든 프로그램이 메모리에 올라와야 실행 가능 CPU 명령어를 해석하여 실행하는 장치 구성 - 산술논리 연산장치 - 제어장치 - 레지스터 메모리 실행에 필요한 프로그램과 데이터를 저장하는 공간 모든 프로그램은 메모리에 올라와야 실행 가능 종류 - RAM : 읽기/쓰기 가능 - ROM : 읽기만 가능 부팅 컴퓨터를 켰을 때 운영체제를 메모리..

책읽기 2021.07.17

[스프링 인 액션][Part-1 스프링 기초][Ch-1] 스프링 시작하기

이 글은 "스프링 인 액션 제5판 (크레이그 윌즈 지음)"을 읽고 주관적으로 작성된 글입니다. ※ 배우는 내용 1) 스프링과 스프링 부트 핵심사항 2) 스프링 프로젝트 생성하기 3) 스프링 개요 ※ 요약 스프링의 목표는 개발자의 목표를 덜어주는 것 웹 어플리케이션 생성 데이터베이스 사용 어플리케이션 보안 마이크로서비스 등 스프링 부트의 역할 쉬운 의존성 관리 autoconfiguration Actuator 스프링 Initializr 초기 설정을 해줌 대부분 자바 개발 환경을 지원 Bean의 구성 스프링 어플리케이션에서 XML/자바 등으로 선언 또는 Component Scan이나 스프링 부트 autuconfiguration으로 자동 구성 애플리케이션 개발 유형의 변화 예전에는 RDBMS를 사용하는 웹 브라..

책읽기 2021.07.17