책읽기 138

[파이썬 알고리즘 인터뷰][트리] 두 이진 트리 병합

이 글은 "파이썬 알고리즘 인터뷰 (박상길 지음)"을 읽고 주관적으로 요약한 글입니다. 문제 정의 로그 재정렬 기준 책에서 구현된 코드 class Solution: def mergeTrees(self, t1: TreeNode, t2: TreeNode) -> TreeNode: if t1 and t2: node = TreeNode(t1.val + t2.val) node.left = self.mergeTrees(t1.left, t2.left) node.right = self.mergeTrees(t1.right, t2.right) return node else: return t1 or t2 기억해야할 기법 return t1 or t2 둘 중 하나가 존재하면, 존재하는 객체 리턴 둘 다 존재하지 않는다면, Non..

책읽기 2021.08.03

[파이썬 알고리즘 인터뷰][트리] 이진 트리 반전

이 글은 "파이썬 알고리즘 인터뷰 (박상길 지음)"을 읽고 주관적으로 요약한 글입니다. 문제 정의 트리의 child들을 모두 반전 책에서 구현된 코드 class Solution: def invertTree(self, root: TreeNode) -> TreeNode: if root: root.left, root.right = \ self.invertTree(root.right), self.invertTree(root.left) return root return None 기억해야할 기법 단순 swap도 재귀로 구현 재귀가 일어난 시점에서 어떤 연산이나 복잡한 과정이 필수적인 사항은 아님 놀랍게 깔끔하다 내가 구현한 코드 class Solution: def invertTree(self, root: TreeN..

책읽기 2021.08.03

[파이썬 알고리즘 인터뷰][트리] 가장 긴 동일 값의 경로

이 글은 "파이썬 알고리즘 인터뷰 (박상길 지음)"을 읽고 주관적으로 요약한 글입니다. 문제 정의 트리에서 노드가 갖는 값이 같은 경로의 최대 길이 책에서 구현된 코드 class Solution: result: int = 0 def longestUnivaluePath(self, root: TreeNode) -> int: def dfs(node: TreeNode): if node is None: return 0 # 존재하지 않는 노드까지 DFS 재귀 탐색 left = dfs(node.left) right = dfs(node.right) # 현재 노드가 자식 노드와 동일한 경우 거리 1 증가 if node.left and node.left.val == node.val: left += 1 else: left ..

책읽기 2021.08.03

[파이썬 알고리즘 인터뷰][트리] 이진 트리의 직경

이 글은 "파이썬 알고리즘 인터뷰 (박상길 지음)"을 읽고 주관적으로 요약한 글입니다. 문제 정의 이진 트리에서 두 노드의 가장 긴 경로 길이 출력 책에서 구현된 코드 class Solution: longest: int = 0 def diameterOfBinaryTree(self, root: TreeNode) -> int: def dfs(node: TreeNode) -> int: if not node: return -1 # 왼쪽, 오른쪽 각각 리프 노드까지 탐색 left = dfs(node.left) right = dfs(node.right) # 가장 긴 경로 self.longest = max(self.longest, left + right + 2) # 상태값 return max(left, right) ..

책읽기 2021.08.03

[파이썬 알고리즘 인터뷰][트리] 이진 트리의 최대 깊이

이 글은 "파이썬 알고리즘 인터뷰 (박상길 지음)"을 읽고 주관적으로 요약한 글입니다. 문제 정의 트리의 최대 깊이 출력 책에서 구현된 코드 def maxDepth(self, root: TreeNode) -> int: if root is None: return 0 queue = collections.deque([root]) depth = 0 while queue: depth += 1 # 큐 연산 추출 노드의 자식 노드 삽입 for _ in range(len(queue)): cur_root = queue.popleft() if cur_root.left: queue.append(cur_root.left) if cur_root.right: queue.append(cur_root.right) # BFS 반복 횟..

책읽기 2021.08.03

[쉽게 배우는 데이터 통신과 컴퓨터 네트워크][Chapter-1] 네트워크의 기초 용어와 기능

이 글은 "쉽게 배우는 데이터 통신과 컴퓨터 네트워크 (박기현 지음)"을 읽고 주관적으로 요약한 글입니다. 1. 네트워크 관련 기초 용어 1) 네트워크 기초 용어 시스템 (System) 내부 규칙에 따라 능동적으로 동작하는 대상 물리적인 대상뿐 아니라, 프로세스 같은 논리적 대상도 포함 인터페이스 (Interface) 시스템과 시스템을 연결하기 위한 표준화된 접근 방식 물리적 규격 / 논리적 규격 인터페이스로 연결된 시스템은 능력과 권한이 같을 수도, 서로 서비스를 주고 받는 상하 관계일 수도 있음 전송 매체 (Transmission Media) 시스템끼리 정해진 인터페이스를 연동해 데이터를 전달하는 물리적 전송 수단 동축 케이블, 공기, 무선 신호 등 프로토콜 (Protocol) 상호 연동되는 시스템이..

책읽기 2021.08.03

[쉽게 배우는 운영체제](요약)[Part-4][Ch-12] 네트워크와 분산 시스템

이 글은 "쉽게 배우는 운영체제 (조성호 지음)"을 읽고 주관적으로 작성된 글입니다. ※ 요약 통신 방향에 따른 통신 분류 단방향 통신 - 한쪽 방향으로만 이루어지는 통신 - 모스 부호, 라디오, TV 방송 양방향 통신 - 양쪽 방향으로 동시에 통신이 이루어지는 방식 - 전화 반양방향 통신 - 단방향과 양방향의 중간 형태 - 어느 순간에는 한쪽 방향만 통신 가능 - 무전기 무선 전화망의 발전 1G - 아날로그 음성 통화 2G - 디지털 음성 통화 3G - 음성 통화 + 데이터 통신 3.9G - 4G 데이터 통신 + 3G 음성 통화 4G - 고속 데이터 통신 + 음성 통화 5G - 초고속 데이터 통신 + 음성 통화 인터넷 네트워크를 하나로 묶는 기술 분산 시스템 클라이언트/서버 시스템 - 네트워크의 모든 ..

책읽기 2021.08.02

[쉽게 배우는 운영체제](요약)[Part-4][Ch-11] 파일 시스템

이 글은 "쉽게 배우는 운영체제 (조성호 지음)"을 읽고 주관적으로 작성된 글입니다. ※ 요약 파일 시스템 파일을 보관하고 관리하는 파일 관리자를 두어 저장장치의 전체를 관리하는 시스템 파일 관리자는 사용자의 요청으로 파일 저장 / 읽기 수행 파일 구조 순차 파일 구조 - 파일 내용이 긴 줄로 늘어선 형태로 저장 - 순차 접근만 가능 인덱스 파일 구조 - 순차 파일 구조에 인덱스 테이블을 추가 - 순차 접근과 직접 접근이 가능 직접 파일 구조 - 해시 테이블을 활용하여 물리 주소로 바로 변환 - 데이터 접근이 매우 빠르나, 저장공간 효율이 떨어짐 디렉터리 관련 있는 파일을 하나로 모아놓는 곳 하나의 디렉터리에는 여러 파일 / 자식 디렉토리 존재 마운트 여러 파티션을 하나로 통합 디스크 파일 할당 방식 연..

책읽기 2021.08.02

[쉽게 배우는 운영체제](요약)[Part-4][Ch-10] 입출력 시스템과 저장장치

이 글은 "쉽게 배우는 운영체제 (조성호 지음)"을 읽고 주관적으로 작성된 글입니다. ※ 요약 입출력 버스의 구조 메인버스 - CPU / 메모리 그래픽 버스 - AGP, Accelerated Graphics Port 고속 입출력 버스 저속 입출력 버스 직접 메모리 접근 (DMA) 입출력 제어기가 CPU 도움 없이 메모리에 접근할 수 있는 권한 메모리 DMA 제어기 입출력 제어기 하드웨어 인터럽트 주변장치의 입출력 요구 / 하드웨어 이상 현상을 CPU에 알려주는 신호 인터럽트 종류 외부 인터럽트 - 입출력 / 하드웨어 내부 인터럽트 - 프로세스의 오류 (Exception Interrupt) - 코어덤프(Core dump) 발생 : 프로세스가 종료되기 직전 메모리 / 레지스터 상태를 저장 시그널 - 사용자 ..

책읽기 2021.08.02

[Java의 정석][Chapter-2] 변수

이 글은 "Java의 정석 (남궁 성 지음)"을 읽고 주관적으로 요약한 글입니다. 1. 변수 변수 단 하나의 값을 저장하는 메모리 공간 변수 타입 변수에 저장될 값의 타입 변수 이름 변수의 구별을 위해 붙인 이름 변수의 초기화 변수 사용 전 처음 값을 저장하는 것 초기화하지 않으면 쓰레기값 대입 연산자 '=' 이용 여러 변수를 콤마 ','로 한줄에 선언 가능 thousand = hundred * 10 -> hundred 값을 "읽어" 10을 곱한 값을 thousand에 저장 두 변수의 값 교환 tmp 저장소 이용 변수의 명명 규칙 예약어(keyword)로 사용 불가능 특수문자는 '_'와 '$'만 사용 가능 카멜 케이스 - 클래스는 첫 문자가 대문자 - 메소드나 변수는 첫 문자가 소문자 2. 변수의 타입 ..

책읽기 2021.08.01