전체 글(308)
-
ORM
ORM을 이용하기 위해서는 Object modeling과 Relational modeling, 두 Modeling의 차이점을 이해해야만 한다. Object Modeling Object Modeling은 OOP를 기반으로 생성된 시스템을 표현한다. 기본 개념 Identity, State, Behavior, Encapsulation 높은 레벨의 개념 Type, Associations, Class, Inheritance Relational Modeling Relational Modeling은 서술어와 비슷한 truth statement로 정보를 표현한다. 기본 개념 Relation, Attribute, Domain, Tuple, Attribute Value( attribute value는 각각의 tuple에 ..
2020.09.08 -
[백준]괄호
입력 괄호 문자열이 올바른 괄호 문자열(VPS)이면 “YES”, 아니면 “NO”를 한 줄에 하나씩 차례대로 출력하는 알고리즘을 작성하여 봅니다. case = int(input()) result = [] for i in range(case): bracket = list(input()) bracket_stack = [] double_break = True for j in range(len(bracket)): if bracket[j] == "(": bracket_stack.append(bracket[j]) else: try: if bracket_stack.pop() == "(": pass except: result.append("NO") double_break = False break if len(bracke..
2020.09.08 -
비지도학습 정리
지금까지 비지도 학습에 해당되는 방법론을 살펴봤을것입니다 이번에는 그것들을 정리해보겠습니다. 비지도 학습을 통해서 서로 잘알아봅시다. 비지도 학습은 탐험적입니다. 탐험이 미지의 세계를 파악하는것이듯이 데이터의 성격을 파악하는 것이 목적입니다 독립,종속변수의 구분이 중요하지 않습니다. 그저 데이터만있으면됩니다. 지도학습은 역사적입니다 과거의 원인과 결과를 바탕으로 결과가 발생했을때 어떠한 결과를 초래할것인가 추측하는 것이 목적입니다 그래서 원인인 독립변수와 결과인 종속변수가 꼭필요합니다. 다시한번 강조하면 비지도학습은 데이터의 성격을 파악하는것이 목적입니다 비유를 들자면 나는 누구인가를 알수있는 좋은 방법이있습니다 바로 내가하는 말들의 빈도수들 을 정리정돈해서 조사해보는것입니다 긍정적인 단어를 많이 사용했..
2020.09.08 -
오버로딩
오버로딩이란? 메서드도 변수와 마찬가지로 같은 클래스 내에서 서로 구별될 수 있어야 하기 때문에 각기 다른 이름을 가져야 합니다 그러나 자바에서는 한클래스 내에 이미 사용하려는 이름과 같은 이름을 가진 메서드가 있더라도 매개변수의 개수 또는 타입이 다르면 같은 이름을 사용해서 메서드를 정의 할수 있습니다 이처럼 한 클래스 내에 같은 이름의 메서드를 여러 개 정의 하는 것을 메서드 오버로딩 또는 간당히 오버로딩이라고 합니다. 오버로딩의 서전적 의미는 과적 하낟 즉 많이 싣는 것을 뜻하며 보통 하나의 메서드 이름에 하나의 기능만을 구현해야 하는데 하느의 메서드 이름으로 여러기능을 구현 하기 때문에 붙여진 이름이라 생각할수 있습니다. 오버로딩의 조건 같은 이름의 메서드를 정의 한다고 해서 무조건 오버로딩인것은..
2020.09.07 -
싱글톤 패턴
싱글턴(Singleton) 이란 ? 싱글턴 패턴은 인스턴스가 오직 1개만 생성되야 하는 경우에 사용되는 패턴입니다. 예를들어 레지스트리 같은 설정 파일의 경우 객체가 여러개 생성되면 설정 값이 변경될 위험이 생길 수 있습니다. 인스턴스가 1개만 생성되는 특징을 가진 싱글턴 패턴을 이용하면, 하나의 인스턴스를 메모리에 등록해서 여러 스레드가 동시에 해당 인스턴스를 공유하여 사용하게끔 할 수 있으므로, 요청이 많은 곳에서 사용하면 효율을 높일 수 있습니다. 주의 해야할 점은 싱글턴을 만들때 동시성(Concurrency) 문제를 고려해서 싱글턴을 설계해야합니다. 아래에서 자바의 싱글턴 패턴 구현방법과, 스프링에서 사용되는 싱글턴 패턴에 대해서 배워보겠습니다. 자바의 싱글턴 패턴(Sigleton Pattern ..
2020.09.07 -
[백준]제로
잘못된 수를 부를 때마다 0을 외쳐서, 가장 최근에 쓴 수를 지우게 시킨다. 이렇게 모든 수를 받아 적은 후 그 수의 합을 구하는 알고리즘을 작성하여봅니다 K = int(input()) num_stack = [] for _ in range(K): num = int(input()) if num == 0: del num_stack[-1] else: num_stack.append(num) if not num_stack: print(0) else: print(sum(num_stack)) 처음에는 입력할 변수K를 만들어주고 배열을 만들어 줍니다 다음으로 K만큼 반복시켜주고 입력할 숫자 num을 넣어줍니다 그리고 num이 0일 경우 num의 stack을 1을 빼줍니다 그렇지 않다면 num_stack에 추가해줍니다...
2020.09.07