전체 446

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

이 글은 "파이썬 알고리즘 인터뷰 (박상길 지음)"을 읽고 주관적으로 요약한 글입니다. 문제 정의 트리에서 노드가 갖는 값이 같은 경로의 최대 길이 책에서 구현된 코드 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

[7월 결산] 계획이 죽고 죽어 일백번 고쳐 죽어

7월이 지나갔다. 7월에 계획했던 일들을 진행하면서 많은 시행착오를 겪었고, 계획을 수시로 변경했다. 처음에는 계획에 대한 달성률이 낮고, 여러 번 변경되는 계획들에 대해 자신에 대한 회의감도 들었지만, 결과적으로는 과정 자체가 재미있고 더 필요한 것이 무엇인지 알아가기 때문에 깊이를 더해간다는 생각이 들었다. 기존 계획과 바뀐 내용들을 정리하고, 앞으로의 계획과 목표를 정리해보려한다. 7월 계획 프로젝트 - 기본 동작 구현 (UI/그래픽을 고려하지 않은) 코딩 테스트 - 파이썬 알고리즘 테스트 1권 끝내기 - 카카오 기출 전부 풀기 책읽기 - 클린코드 - JAVA의 정석 7월 계획은 크게 프로젝트, 코딩 테스트, 책읽기로 구성해서 공부를 진행하려했다. 프로젝트를 하려 했던 이유는 글로 본 내용을 직접 ..

[쉽게 배우는 운영체제](요약)[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

버퍼(Buffer)를 사용하면 속도가 빨라진다?

버퍼는 처리속도를 빠르게한다? 운영체제를 공부하면서 "버퍼"를 오랜만에 접했다. 내가 버퍼하면 가장 먼저 떠오르는 것은, 네트워크에서 패킷에 데이터를 싣는 과정에 사용되는 버퍼다. 그리고 운영체제에서 설명하는 버퍼는 속도 차이를 가지는 장치 사이에서 사용된다고 한다. 버퍼의 의미가 "완충기"인 것처럼, 두 버퍼 모두 같은 역할이며 존재하는 의미도 같다. 그런데 버퍼에 대해 검색하던 중, 아래 문구를 보고 신경쓰였다. 버퍼를 사용하면 속도가 빨라진다[0][1] 버퍼라는게 속도가 다른 두 장치 사이의 데이터 교환에서 유용한 건 알겠지만, 어떤 측면에서는 불필요한 과정이 추가되었기 때문에 오버헤드가 생긴 것이다. 그럼에도 버퍼를 사용하면 속도가 빨라진다는 말이 어떻게 생긴 것인지 궁금했다. 버퍼의 동작 먼저 ..

고민하기 2021.08.02

[TCPschool][2장] MySQL 문법(2/2)

이 글은 "TCPschool/코딩과 데이터/MySQL"을 읽고 주관적으로 작성된 글입니다. https://tcpschool.com/mysql/intro 코딩교육 티씨피스쿨 4차산업혁명, 코딩교육, 소프트웨어교육, 코딩기초, SW코딩, 기초코딩부터 자바 파이썬 등 tcpschool.com 1. INSERT INSERT INTO VALUES문을 사용하여 테이블에 새로운 레코드 추가 # 필드이름 포함 INSERT INTO 테이블이름(필드이름1, 필드이름2, ...) VALUES (데이터값1, 데이터값2, ...) # 필드이름 제외 INSERT INTO 테이블이름 VALUES (데이터값1, 데이터값2, ...) 필드이름이 생략되면 스키마와 같은 순서대로 필드값 대입 즉, 모든 필드 이름을 다 적을 필요가 없음 ..

CS/MySQL 2021.08.01