CS/자료구조
Observer Pattern
참고 자료https://inpa.tistory.com/entry/GOF-%F0%9F%92%A0-%EC%98%B5%EC%A0%80%EB%B2%84Observer-%ED%8C%A8%ED%84%B4-%EC%A0%9C%EB%8C%80%EB%A1%9C-%EB%B0%B0%EC%9B%8C%EB%B3%B4%EC%9E%90https://velog.io/@octo__/%EC%98%B5%EC%A0%80%EB%B2%84-%ED%8C%A8%ED%84%B4Observer-Pattern 00. 들어가기 전 원래 Observer Pattern에 대해서 알고는 있었으나, 최근에 로직을 구성하면서 관심사를 분리하여 결합을 낮출 수 있는 Spring Boot와 NestJS의 EventListner 기능을 애용하고 있는 데 이게 사실 Ob..
상대 패턴(State Pattern)
상태 패턴(State Pattern) 상태 패턴은 객체의 상태에 따라 행동을 해야하는 상황에서 객체 스스로 자신의 상태에 따른 행동을 하지 않고, 상태를 객체화하여 상태가 행동을 할 수 있게 위임한 패턴이다. 쉽게 말하면 상태를 Class에서 값으로 가지고 있는 것이 아니라, Class로 선언하고 해당 상태의 Class가 해야하는 행동을 메서드로 정의하고 이를 인터페이스로 캡슐화 후 호출하는 Class가 인터페이스를 호출하는 방식이다. 사용 예시 자 그러면 Person Class를 이용해서 예시를 들어보자. 사람은 나이에 따라 상태를 child(어린이), Adult(청년), Senior(노년)으로 구별된다. 해당 상태에 따라서 움직인다라는 메서드를 사용 가능하고 움직이면 나이가 들다가 다시 어린이로 돌아..
[자료 구조] Queue
Queue 컴퓨터의 자료구조로, 먼저 넣은 데이터가 먼저 나오는 FIFO(First In First Out) 구조로 저정하는 형식 Queue는 위에서 쌓이는 이미지로 설명한 Stack과 달리 위의 이미지와 같이 입구와 출구가 다른 구조라고 생각하면 쉽다. 데이터가 들어오는 입구와 나가는 출구는 동일하지 않기에, 입구로 먼저 들어온 데이터가 출구로 가장 먼저 나가는 구조를 가지고 있으며, Queue에서 데이터가 들어가는 입구를 rear이라고 하고, 데이터가 나오는 출구를 front라고 한다. Queue는 FIFO라고 하는 데, FIFO는 First In FIrst Out의 약자로, 처음 들어가는 데이터가 가장 먼저 나오는 구조라는 의미다. 전에 이야기 했던 Stack이 가지고 있는 LIFO 특성과 차이점은..
[자료 구조] Stack
Stack 한 쪽 끝에서만 자료를 넣고 뺄 수 있는 LIFO(Last In First Out)형식의 자료 구조 Stack은 데이터가 한 줄로 위에서 아래로 들어간다고 생각하면 쉬운데, 아래로 데이터가 들어오거나 나갈 수 없고, 위에서 데이터가 들어와서 차곡차곡 쌓이고, 데이터가 나갈 때도 위에서부터 나가는 구조인데 이는 LIFO를 따르기 떄문이다. LIFO(Last In First Out)는 최근의 추가항 데이터가 가장 먼저 제거되는 것이다. Stack의 대표적인 기능은 아래와 같다. push : Stack에 요소를 추가한다. pop : Stack에서 요소를 뺀다. top : Stack의 입구와 가장 가까운 요소에 대해 반환한다. size : Stack의 크기를 반환한다.
[CS] 진법에 대해 알아보자(1)
2진법과 10진법 우리는 일상생활에서 주로 10진법을 사용한다. 1946년에 개발된 컴퓨터 에니악은 사람에게 익숙한 10진법을 사용하도록 설계되었지만, 전기 회로는 전압이 불안정하여 전압을 10단계로 나누어 처리하는 데 한계가 있었다. 그래서 1950년에 개발된 에드박은 단 두가지 단계, 전기가 흐르면 1, 전기가 흐르지 않으면 0으로만 동작하도록 설계되었고 매우 성공적이었기에, 지금까지 대부분의 컴퓨터는 2진법을 사용한다. 우리는 변수에 값을 저장하면 10진수로 저장되는 것처럼 보았지만, 실제로 컴퓨터는 2진수 밖에 모르기에, 2진수로 바뀌어 저장하게 된다. 따라서 age에 22를 저장하면 실제로는 2진수인 11001로 저장이 되는 것이다. 2진수는 0과 1로만 데이터를 표현하기에 10진수보다 많은 자..