전체 446

[Java의 정석][Chapter-5] 배열

이 글은 "Java의 정석 (남궁 성 지음)"을 읽고 주관적으로 요약한 글입니다. ※ 요약 배열 같은 타입의 여러 변수를 하나의 묶음으로 다루는 것 배열의 선언과 생성 int[] score; (메모리를 할당하지 않은 상태) int[] score = new int[3]; int[] socre = int[]{1, 2, 3}; int[] score = {1,2,3}; 안되는 케이스 int[] score; score = {1,2,3}; 기본값인 0으로 초기화 배열의 길이 범위 : 0 ~ 약 20억 변수로 길이 선언 가능 배열이 길이가 0인 경우 - main args에 아무것도 들어오지 않을 때 - JVM이 args를 길이 0인 배열로 생성하여 args.length가 0이므로, null인지 검사할 필요가 없음 배..

책읽기 2021.08.05

[파이썬 알고리즘 인터뷰][트라이] 팰린드롬 페어

이 글은 "파이썬 알고리즘 인터뷰 (박상길 지음)"을 읽고 주관적으로 요약한 글입니다. 문제 정의 리스트에 포함된 두 문자열이 더해져서 팰린드롬이 되는 문자열의 인덱스 pair들 출력 책에서 구현된 코드 import collections from typing import List # 트라이 저장할 노드 class TrieNode: def __init__(self): self.children = collections.defaultdict(TrieNode) self.word_id = -1 self.palindrome_word_ids = [] class Trie: def __init__(self): self.root = TrieNode() @staticmethod def is_palindrome(word: s..

책읽기 2021.08.05

[파이썬 알고리즘 인터뷰][트라이] 트라이 구현

이 글은 "파이썬 알고리즘 인터뷰 (박상길 지음)"을 읽고 주관적으로 요약한 글입니다. 문제 정의 트라이 구현하기 책에서 구현된 코드 import collections # 트라이의 노드 class TrieNode: def __init__(self): self.word = False self.children = collections.defaultdict(TrieNode) class Trie: def __init__(self): self.root = TrieNode() # 단어 삽입 def insert(self, word: str) -> None: node = self.root for char in word: node = node.children[char] node.word = True # 단어 존재 여부 ..

책읽기 2021.08.05

[파이썬 알고리즘 인터뷰][HEAP] 배열의 K번째 큰 요소

이 글은 "파이썬 알고리즘 인터뷰 (박상길 지음)"을 읽고 주관적으로 요약한 글입니다. 문제 정의 정렬되지 않은 배열에서 K번째 큰 요소 추출 책에서 구현된 코드 class Solution: def findKthLargest(self, nums: List[int], k: int) -> int: return sorted(nums, reverse=True)[k - 1] 기억해야할 기법 정렬이 더 빠르다 heapify해서 K번째 요소를 찾는 것보다 정렬이 더 빠르다고 한다 내가 구현한 코드 class Solution: def findKthLargest(self, nums: List[int], k: int) -> int: heapq.heapify(nums) k = len(nums)-k+1 while k != 1..

책읽기 2021.08.05

[파이썬 알고리즘 인터뷰] 15장 - 힙(heap)

이 글은 "파이썬 알고리즘 인터뷰 (박상길 지음)"을 읽고 주관적으로 요약한 글입니다. 힙의 특성을 만족하는 거의 완전한 트리(Almost Complete Tree)인 트리 기반 자료구조 힙의 특성 - 부모가 항상 자식보다 작거나 같다 거의 완전한 트리 - 완전 트리(Complete Tree)와 같은 의미 - 포화 트리(Perfect Tree)에서 pefect와 complete의 단어적 의미 충돌로 인해 생겨난 말인듯 하다 https://en.wikipedia.org/wiki/Binary_tree Binary tree - Wikipedia From Wikipedia, the free encyclopedia Jump to navigation Jump to search Limited form of tree ..

책읽기 2021.08.05

[쉽게 배우는 데이터 통신과 컴퓨터 네트워크](요약)[Chapter-2] 네트워크 모델

이 글은 "쉽게 배우는 데이터 통신과 컴퓨터 네트워크 (박기현 지음)"을 읽고 주관적으로 요약한 글입니다. ※ 요약 모듈화 복잡하고 큰 시스템의 기능은 특정 단위의 모듈로 나누어 설계됨 모듈화의 장점 구조가 단순 -> 전체 시스템을 이해하기 쉬워짐 각 모듈의 독립적인 기능 수행 -> 고장 / 업그레이드 등 상황 대처가 쉬워짐 주소의 표현 주소의 역할 특정 호스트끼리 통신하기 위해 시스템을 구분하여 지칭 일반적으로 주소는 호스트당 하나씩 부여 그룹 주소 다수의 호스트를 묶은 주소 (일대다 통신) 브로드캐스팅(Broadcasting) - 네트워크에 연결된 모든 호스트 지칭 멀티캐스팅(Multicasting) - 특정 사용자 그룹을 묶어서 지칭 오류 제어 (Error Control) 데이터 송수신 과정의 오류..

책읽기 2021.08.04

[파이썬 알고리즘 인터뷰][트리] 전위,중위 순회 결과로 이진 트리 구축

이 글은 "파이썬 알고리즘 인터뷰 (박상길 지음)"을 읽고 주관적으로 요약한 글입니다. 문제 정의 전위순회와 중위순회 정보로 이진 트리 만들기 책에서 구현된 코드 class Solution: def buildTree(self, preorder: List[int], inorder: List[int]) -> TreeNode: if inorder: # 전위 순회 결과는 중위 순회 분할 인덱스 index = inorder.index(preorder.pop(0)) # 중위 순회 결과 분할 정복 node = TreeNode(inorder[index]) node.left = self.buildTree(preorder, inorder[0:index]) node.right = self.buildTree(preorder,..

책읽기 2021.08.04

[파이썬 알고리즘 인터뷰][BST] 이진 탐색 트리 노드 간 최소 거리

이 글은 "파이썬 알고리즘 인터뷰 (박상길 지음)"을 읽고 주관적으로 요약한 글입니다. 문제 정의 두 노드간 책에서 구현된 코드 class Solution: prev = -sys.maxsize result = sys.maxsize # 재귀 구조 중위 순회 비교 결과 def minDiffInBST(self, root: TreeNode) -> int: if root.left: self.minDiffInBST(root.left) self.result = min(self.result, root.val - self.prev) self.prev = root.val if root.right: self.minDiffInBST(root.right) return self.result 기억해야할 기법 트리의 탐색 순서에 대..

책읽기 2021.08.04