책읽기 138

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

이 글은 "파이썬 알고리즘 인터뷰 (박상길 지음)"을 읽고 주관적으로 요약한 글입니다. 문제 정의 높이에 따라 쌓일 수 있는 물의 총계 계산 책에서 구현된 코드 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

[쉽게 배우는 운영체제][Part-1][Ch-1] 운영체제의 개요

이 글은 "쉽게 배우는 운영체제 (조성호 지음)"을 읽고 주관적으로 작성된 글입니다. ※ 요약 운영체제의 정의 사용자에게 편리한 인터페이스 환경 제공 컴퓨터 자원을 효율적으로 관리하는 소프트웨어 운영체제의 역할/목표 자원관리 -> 효율성 자원 보호 -> 안전성 하드웨어 인터페이스 제공 -> 확장성 사용자 인터페이스 제공 -> 편리성 운영체제 구성 커널 - 핵심 기능 인터페이스 - 사용자의 명령을 커널에게 - 커널의 결과를 사용자에게 커널의 종류 단일형(Monolithic) - 모듈이 구분 없이 구성 계층형(Layered) - 비슷한 가진 모듈로 계층을 이루고, 그 계층의 통신으로 구성 마이크로(Micro) - 기본적인 기능만 제공하고, 사용자 영역에서 모듈 구현 1. 운영체제 소개 1) 일상생활 속의 운..

책읽기 2021.07.16

[파이썬 알고리즘 인터뷰][문자열] 그룹 애너그램 (중요)

이 글은 "파이썬 알고리즘 인터뷰 (박상길 지음)"을 읽고 주관적으로 요약한 글입니다. 문제 정의 애너그램 문자를 재배열하여 다른 뜻을 가진 단어로 바꾸는 것을 의미 문자의 순서가 바뀌면 같아지는 단어들끼리 묶은 리스트 반환 책에서 구현된 코드 def groupAnagrams(self, strs: list[str]) -> list[list[str]]: anagrams = collections.defaultdict(list) for word in strs: anagrams[''.join(sorted(word))].append(word) return list(anagrams.values()) 기억해야할 기법 frozenset을 dict의 key로 사용시 주의 문자의 개수를 생략하기 때문에, 사용된 알파벳이 ..

책읽기 2021.07.16

[파이썬 알고리즘 인터뷰][문자열] 가장 흔한 단어 (중요)

이 글은 "파이썬 알고리즘 인터뷰 (박상길 지음)"을 읽고 주관적으로 요약한 글입니다. 문제 정의 금지 단어 제외 대소문자 구분하지 않음 구두점(마침표, 쉼표 등) 무시 책에서 구현된 코드 def mostCommonWord(self, paragraph: str, banned: list[str]) -> str: words = [word for word in re.sub(r'[^\w]', ' ', paragraph) .lower().split() if word not in banned] counts = collections.Counter(words) return counts.most_common(1)[0][0] 기억해야할 기법 정규식 다시 확인 \w 같은 표현 기억이 잘 안남 리스트 컴프리헨션 활용 특정 조..

책읽기 2021.07.16