Buddy Strings
Problem Solving 2020. 10. 12. 22:51

Buddy Strings Buddy Strings - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com - 문제 내용 : 주어진 두 문자열중에 한 문자열의 2글자를 교환해서 동일한 문자를 만들 수 있는지 알아내라 - 접근 방법 문제의 Rule을 찾아야 한다. 쉬운 문제이기 때문에 크게 설명할 것은 없는데, 단지 알파벳 26자를 이용한 memorization을 통해 접근 하는 방법을 눈여겨 보면 좋을 것이라고 생각한다. 근본적으로 어떻게 문자의 구성이 되든 알파벳의 ..

Count Subtrees With Max Distance Between Cities
Problem Solving 2020. 10. 12. 00:24

Count Subtrees With Max Distance Between Cities Count Subtrees With Max Distance Between Cities - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com - 문제 내용 : Tree로 만들어진 Nodes가 있다. Node의 갯수와 Node간의 Brides Array가 주어 졌을때, (순환 하지 않음) 연결 가능한 모든 Node의 Subsets에서 가장 거리가 긴 Distances를 길이로 해서 A..

Realization
System Design 2020. 10. 10. 14:49

Realization 한국어로는 실체화정도의 번역이 가능하다. 이는 일반화와도 비슷한 면이 있는데 2020/10/09 - [System Design] - Generalization 일반화는 상속받은 객체 뿐만이아니라 상속을 하게 되는 객체도 독립 Instance로 표현될 가능성이 있다. 물론 추상객체가 아닌 경우에 가능하다. 그러나 Realization은 그렇지 않다. 반듯이 상속되어 구현 되어져야 하는 방식이다. 예를 들자면 총의 기능이 무었인지 정의 되어있는 문서가 있다고 생각해 보겠다. 발사된다. 총알을 넣는다. 발사 버튼이 있다. 이와 같은 Protocol 또는 Interface는 자체적으로 활용성을 갖을 순 없다. 그러나 이와 같은 Protocol을 만족시키는 권총이라는 클래스를 만들어 실체화 ..

Aggregation and Composition
System Design 2020. 10. 10. 14:37

Aggregation and Composition 앞서서는 Dependency와도 의미가 혼동 된다고 했는데, 2020/10/09 - [System Design] - Dependency Aggregation의 경우는 Relationship과 완전히 동일하게 표현된다. 반면에 Composition은 Ownership에 대한 표현을 명확히하는데 목표를 두고 있다. 상기의 그림을 보면 철수가 없다고 해도 게임기는 독립 객체로서 살아 갈 수 있다. 만약에 철수가 사라지면 게임기도 반듯이 같이 사라져야 한다고 하면 어떻게 표현되어야 할까? 이때 사용되는게 Composition이다.

Dependency
System Design 2020. 10. 10. 14:32

Dependency A 클래스가 B클래스를 반듯이 필요로 하는 관계를 나타낸다. 상기 그림을 보면 Association과 틀릴게 없어 보인다. 2020/10/09 - [System Design] - Associations Associations Associations 클래스 간의 관계를 나타냄 상호관의 관계를 상호 참조 한다고 하는 것을 Tight Coupling되었다고 하며, 이와같은 상호 참조를 피해야한다. 한쪽만 알고 반대쪽을 모르는 경우, 상기 그림�� enumclass.tistory.com 그리고 실질적으로 다를게 별로 없긴 한데, 다양한 자료를 찾아 보아도, 역시 명확하게 A와 B는 이런식으로 분리 된다는 대표적인 내용을 찾아 보기 어려웠다. 그래서 몇가지 대표 되는 차이점의 내용을 남겨 보고..

Generalization
System Design 2020. 10. 10. 14:19

Generalization 일반화라고 한국어로 표시 되며, 여러 사물의 특징을 일반화 시킨것을 Generalization이라고 Data측면에서는 표현한다. 그러나 ERD에 입장에서는 상속을 받아 실체화 시킨다는 표현이 더 맞는 것 같다. 사람 클래스를 상속받아서 철수와 영희라는 클래스를 만든다. 상기와 같은 경우는 하나의 Class를 상속받는 다고 본다면, 이를 Single Inheritance 단일 상속 이라고 한다. 반대로 여러 Class에서 하나의 클래스로 상속 받는 경우도 있다. Multiple Inheritance 다중 상속 다중 상속이라는 것으로 C++, Perl, Python 등의 언어가 이를 지원하지만, 일반적으로는 구현의 복잡성 이유로 지원 하지 않는 방식이다.

Associations
System Design 2020. 10. 10. 14:05

Associations 클래스 간의 관계를 나타냄 상호관의 관계를 상호 참조 한다고 하는 것을 Tight Coupling되었다고 하며, 이와같은 상호 참조를 피해야한다. 한쪽만 알고 반대쪽을 모르는 경우, 상기 그림에서 2번째 같은 경우를 Directed Association이라고 한다. Multiplicity Association의 관계에 대한 Cardinality 즉 객체관의 관계 참여자 표현 방법이다. 클래스 간의 Carinality를 표현 할 수 도 있지만 Properties로 표현도 가능하다. 게임 Class를 철수는 gameTitle이라는 Properties로써 사용하고 있다. 철수 Class에는 Multiplicity가 표현되어 있지 않는데 이는 기본적으로 1로 생각하면 된다. 만약 0이나 ..

Class Diagram
System Design 2020. 10. 10. 13:52

Class Diagram 클래스 다이어 그램은 3개의 부분으로 이루어져 있음 Class Name : Upper Camel Case Atrributes : Lower Camel Case Class를 구성하는 Data Methods : Lower Camel Case Class를 구성하는 Function Visibility Class의 Attributes와 Method를 어디까지 Expose 할 것인가 범위 설정자 - Private : 외부 오픈하지 않음 + Public : 외부 오픈함 # Protected : Child Classes에서만 접근 가능함 ~ Package : 동일 패키지 Path 내에 있는 Class만 접근 가능

Two Sum III - Data structure design
Problem Solving 2020. 10. 10. 13:35

Two Sum III - Data structure design Account Login - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com - 문제 내용 : Two Sum API 개발 - 접근 방법 일반적인 Two Sum과 같기 때문에 큰 문제는 없는데 Edge Case가 2가지가 있어서 해당 부분을 남기고자 한다. Array에 한개의 값만 있는데 정답이 되는 경우 예를 들자면 0의 경우는 0을 찾게 되는데 이때 0이 Array에 하나밖에 없다면 false 동일..