예외처리 방식 오류 코드를 리턴하지 말고, 예외를 던져라 (당연) 예전 에러코드로 반환하는 방식 오류가 발생한 부분에서 예외를 던진다. (별도의 예외 처리가 필요하다면 checked exception을 사용한다. 또는 throws 명시) checked exception을 사용하지 않는다면, 메서드 선언부에 throws를 명시 예외를 처리할 수 있는 곳에서 catch하여 처리 *문제점 * 특정 메서드에서 checked exception을 throw하고 상위 메서드에서 catch 한다면 모든 중간 메서드들은 throws를 해야 한다. OCP 위배 : 상위 메서드에서 하위 메서드의 디테일에 대해 알아야 한다. 필요한 경우 checked exception을 사용하지만, 일반적으로 득보다 실이 많다. Checke..
재귀 용법 (Recursive call, 재귀 호출) 고급 정렬 알고리즘에서 재귀 용법을 사용 한다. 함수 안에서 동일한 함수를 사용 예제 def factorial(num): if num > 1 : return num * factorial(num-1) else: return num 시간 / 공간 복잡도 모두 O(n-1)이므로, 둘다 O(n)이 된다. def function(입력): if 입력 > 일정값: return function(입력-1) else: return 일정값 재귀 호출은 내부적으로 스택처럼 관리 된다. 파이썬에서 재귀 호출의 최대 깊이는 1000회이다. (즉, 스택 공간이 1000개) def palindrome(data): pal_data = data[::-1] if data == pal_..
버블정렬 두 인접한 데이터를 비교해서 앞에 있는 데이터가 뒤에 있는 데이터보다 크면, 자리를 바꾸는 정렬 알고리즘 즉, 한 회전 당 제일 큰값을 뒤로 보낸다. 데이터 길이 -1 만큼 턴한다. def bubblesort(data): for index in range(len(data) -1): swap = False for index2 in range(len(data) - index -1): if data[index2] > data[index2 +1]: data[index2], data[index2+1] = data[index2+1], data[index2] swap=True if swap == False: break return data 알고리즘 분석 반복문이 두 개 O(n^2) 최악의 경우 : n(n-1..
자료구조 vs 객체 자료구조 vs 객체 //자료구조 public interface Vehicle { double getFuelTankCapacityInGallons(); double getGallonsOfGasoline(); } public class Car implements Vehicle { double fuelTankCapacityInGallons; double gallonsOfGasoline; public double getFuelTankCapacityInGallons() { return this.fuelTankCapacityInGallons; } public double getGallonsOfGasoline() { return this.gallonsOfGasoline; } } 자료구조는 값을 가..
환경 설정 JDK (Java SE 16 사용) https://www.oracle.com/kr/java/technologies/javase-jdk16-downloads.html Download the Latest Java LTS Free Subscribe to Java SE and get the most comprehensive Java support available, with 24/7 global access to the experts. www.oracle.com JAVA_HOME PATH Android Studio https://developer.android.com/studio Download Android Studio & App Tools - Android Developers Android Stu..
트리 구조 트리 : Node 와 Branch를 이용해서, 사이클을 이루지 않도록 구성한 데이터 구조 주로 이진 트리 형태의 구조로 탐색 알고리즘 구현에서 많이 사용 된다. 트리 용어 Node : 데이터를 저장하는 요소 Root Node : 최상위 노드 (레벨 0) Level : 노드의 깊이 Sibling (Brother Node) : 동일한 부모를 가진 노드 Depth : 트리에서 Node를 가질 수 있는 최대 레벨 이진트리와 이진 탐색 트리 이진 트리 (Binary Tree) : 최대 브랜치가 2인 트리 이진 탐색 트리 : BST (이진 트리에 추가적인 조건이 있는 트리) 왼쪽 노드는 해당 노드보다 작은 값, 오른쪽 노드는 해당 노드보다 큰 값 장점 : 탐색 속도 개선 단점 : 복잡하다. class N..
해시 테이블 키(Key)에 데이터(Value)를 저장하는 데이터 구조 Key를 통해 바로 데이터를 받아올 수 있으므로, 속도가 획기적으로 빨라진다. 파이썬 딕셔너리 타입이 해쉬 테이블의 예 보통 배열로 미리 Hash Table 사이즈 만큼 생성 후에 사용 (공간과 탐색 시간을 맞바꾸는 기법) 블록 체인에서 사용 파이썬에서는 해쉬를 별도로 구현할 이유가 없다. 딕셔너리 자체가 해쉬테이블 용어 Hash : 임의의 값을 고정 길이로 변환 Hash Table : 키 값의 연산에 의해 직접 접근이 가능한 데이터 구조 해싱 함수 : 키에 대해 산술 연산을 이용해 데이터 위치를 찾을 수 있는 함수 해쉬 값 또는 해쉬 주소 : 키를 해싱 함수로 연산해서, 해쉬 값을 알아내고 키에 대한 위치를 일관성있게 찾을 수 있다...
Communication Communicate = to share 모스부호 -> 전기신호(아날로그 통신) -> 컴퓨터(디지털 통신) 아날로그 통신 - 주파수 디지털 통신 - 0과 1의 비트 값 통신을 위한 5가지 요소 송신자, 수신자, 전송매체 , 메세지, 약속(프로토콜) 컴퓨터 네트워크에서는 노드와 링크 (노드: 컴퓨터(송,수신), 링크: 네트워크 케이블(전송매체), 메시지(비트열), 프로토콜(tcp/ip)) 실제 송신, 수신 사이에 여러 노드들이 존재 한다. 노드의 종류 (1. Terminal (단순 전달, 스스로 계산X) , 2. Host (컴퓨터), 3. Device(네트워크 상의 여러 장치 - 허브, 스위치, 브릿지, 라우터 등)) 프로토콜 통신을 원활하게 연결해주는 S/W - 통신 규약 식별(..