이카's
반응형
article thumbnail
디자인 패턴 & 패러다임 모음 - Java
Language/Java 2023. 5. 30. 06:38

디자인 패턴 & 패러다임 자바를 공부하는 중 가장 많이 접하는 단어는 객체지향과 디자인패턴 일 것이다. 자바를 한번은 훑은 시점에서 저 두 단어에 대한 느낌은 사실 아직도 잘 모르겠다. 그럼에도 불구하고 두 개념은 자바에 있어서 아주 중요한 개념이라는 것은 모두가 알 기에 우리는 추상적인 개념의 두 단어를 반드시 공부해야한다. 이번 포스팅에 다뤄볼 것은 패턴의 패러다임이다. 거창하게 할 필요는 없고 가볍게 종류를 알아보고, 쉽게 이해하는 비유를 들까 한다. 디자인 패턴 사실 패턴은 게임을 조금 하는 사람들한테는 익숙하다. 큰 보상을 위해 레이드를 한다. 하지만 무작정 보스를 때리는 것만으로 던전을 클리어 할 수 없다. 탱커, 힐러, 딜러가 보스의 패턴을 알고 해결책을 내야지 끝내 레이드를 성공할 수 있다..

article thumbnail
옵저버 패턴(Observer) - Java
Language/Java 2023. 5. 30. 06:34

옵저버 패턴(Observer) 옵저버 패턴은 객체의 상태를 관찰하고 상태변화가 있을 경우 알림을 받는 것을 말한다. 판매자가 하나 있다면, 이를 여러명의 옵저버가 보고 있으며 판매자가 어떤 행동을 하여 상태의 변화가 있다면 이를 옵저버가 알림을 해주는 것이다. 예로 들자면 집을 구하고자 하는 사람이 공인중개사에 매번 집 매물을 보러 가는게 아닌, 공인중개사에서 매물이 나오는 걸 체크하고 있다가 매물이 나오면 구매자한테 알려주는 방법이 옵저버 패턴이다. 옵저버 패턴은? 행동 패턴으로 어떤 이벤트(행동)이 발생했을 때, 이를 감지하고 결과를 준다. 옵저버 패턴은 SOLID 원칙에 개방-폐쇄 원칙(Open Close Principle)을 따르고 있다. 새로운 옵저버가 작성되더라도 판매자는 바뀌는게 없기 때문이..

article thumbnail
전략 패턴(Strategy) - Java
Language/Java 2023. 5. 30. 04:34

전략 패턴(Strategy) 전략 패턴은 팩토리 패턴과 굉장히 유사하다. 다른점이 있다면, 지금 하는 행동을 다른 행동으로 바꿀 수 있다는 것이다. 이는 자바 Runtime에 결정된다. 팩토리 패턴과 상위 클래스를 하위 클래스가 상속 받는 방식이 유사하기 때문에 장점, 단점, 해결책 내용은 넘어간다. 간단히 구현 부분만 집고 넘어가겠다. 구현 먼저 interface로 구현한다. // 전략 패턴 interface PaymentStrategy { public void pay(int amount); } 어떤 상품을 구매할 때, KAKAOCard로 사는 것과, LUNACard로 사는 것을 구현다. class KAKAOCardStrategy implements PaymentStrategy { private Str..

article thumbnail
팩토리 패턴(Factory) - Java
Language/Java 2023. 5. 30. 04:04

팩토리 패턴(Factory) 일반적으로 하나의 클래스에 여러개를 만드는 패턴이다. 하지만 상위 클래스가 뼈대를 이루고 하위 클래스가 상새내용을 적는 부분에서 팩토리 패턴이라는 명칭이 붙여졌다. 팩토리 패턴? 팩토리 패턴은 생성 패턴으로 생성패턴에는 두 가지 중요한 점이 있다. 생성 패턴은 어떤 Class를 사용하는지 캡슐화를 한다. 인스턴스들의 결합, 생성에 대한 정보를 은닉한다. 즉, 생성 시점, 누가 사용하는지, 무엇이 생성되는지 등등 유연성을 가질 수 있다. 문제점 or 단점 코드양 증가 코드파악 난이도 증가 코드양 증가 싱글톤 패턴과 비교했을 때, interface를 구현하고, 아래 클래스에서 세부적인 내용을 구현하기 때문에 코드 양이 많아지는 단점이 있다. 코드파악 난이도 extends 하는 과..

article thumbnail
싱글톤 패턴(Singleton) 및 7가지 구현 - Java
Language/Java 2023. 5. 30. 03:23

싱글톤 패턴(Singleton) 보통 하나의 클래스를 기반으로 여러 개의 인스턴스를 만들지만, 그러지 않고 하나의 클래스에 하나의 인스턴스만 만들어 이를 기반으로 로직을 쓴다. 즉 하나의 클래스에 하나의 인스턴스만 가지는 패턴이다. 싱글톤 패턴은? 싱글톤 패턴은 생성 패턴으로 생성패턴에는 두 가지 중요한 점이 있다. 생성 패턴은 어떤 Class를 사용하는지 캡슐화를 한다. 인스턴스들의 결합, 생성에 대한 정보를 은닉한다. 즉, 생성 시점, 누가 사용하는지, 무엇이 생성되는지 등등 유연성을 가질 수 있다. 문제점 or 단점 싱글톤 패턴을 사용하게 되면 크게 두 가지 단점이 발생한다. 의존성이 높아진다. TDD에 걸림돌이 된다. 의존성이 높아진다. 의존성은 B가 변할 때, A가 변한다 라는 개념이다. 의존성..

article thumbnail
알고리즘 유형 별 정리
알고리즘 문제풀이 2023. 5. 24. 13:23

알고리즘 풀이 모음 알고리즘을 한번으로 공부하는 것은 어렵다. 마치 수학문제같다..! 한번으로 땡!이 아닌 여러번 풀어보고, 필요한 로직을 기억하고, 유형별로 풀어보는게 좋은 방법이라고 생각한다! 알고리즘을 유형별로 정리해보고, 필요한 로직을 기록하기 위한 포스팅을 시작한다! BOJ 유형별로 가장 많은 문제를 보유한 플렛폼 입출력 I/O가 조금 불편하긴 하지만, 문제 유형이 많아서 좋고, 다양한 것을 공부 할 수 있어서 메리트가 있다. Programmers 일단 문제가 길다. (== 이해하는데 어렵다. 특히 카카오 문제) 하지만 사고력을 키울 수 있는 문제가 많다. 또한 최근 문제가 많아져서 풀만한 것 같다. 또한, I/O에 대한 부분을 전혀 신경을 쓸 필요가 없다.

article thumbnail
알고리즘을 잘 풀기 위한 팁 - 구현편(feat. 유튜버 큰돌님)
알고리즘 문제풀이 2023. 5. 23. 21:31

알고리즘 어떻게 풀까? 구현 디버깅 (굳이 메모장 필요 X) 문제 도식화 쉬움2 보통1 꾸준히 타자속도 자주 나오는 로직은 외우자 실력이 조금 있다? ▶️▶️▶️ BOJ 실버 2문제, 골드 1문제 그렇지 않다? ▶️▶️▶️ BOJ 브론즈 2문제, 실버 1문제 찾는 방법 solved.ac 들어가서 검색 ▶️▶️▶️ ex) #implementation *s (구현 실버 문제) 예시 백준 14502 - 연구소 벽 3개 새운다. 1-1. 모든 경우의 수 체크 - 완전 탐색 바이러스 퍼트린다 안전 영역 count하는 것 필요 DFS 구현 처음부터 IDE에서 풀되, 자동완성 쓰지 말고, 직접 치는 연습을 해야한다. 구현문제의 많은 경우는 x1, y1, x2, y2로 네방향으로 벽을 치면서 구현하는 문제가 많다. 꼭..

article thumbnail
제 2회 코딩올나잇
개인공간 2023. 5. 10. 18:59

제 2회 코딩올나잇 내가 고담시티의 박쥐였나 싶다. 이러다 낮밤 바뀌는건 아닌가 싶어! 오늘 하는 이유는 토이프로젝트 구현 때문이다. 내일 까지 제출인데, 지금 절반도 못한 것 같다. 사실 속으로는 처절한 몸부림 중이지만, 겉으로는 아무렇지 않은척 하는 중이다! 목표 중요도에 따라 순서 작성 📓 토이프로젝트 이거 하나라도 끝내면 다행이다. 00시 상태 수면욕보다 성취욕이 더 큰 상태 How? 에러 잡는 중 NullPointerException 에러가 나는데, 어느 부분에서 나는지 모르겠다. 01시 상태 How? 에러 잡는 중 NullPointerException 에러가 나는데, Group 쪽에서 Parameter가 refresh 되지 않아 발생하는 에러 같다. 03시 상태 졸린지 모르는 상태에 왔다. H..

article thumbnail
제1회 코딩올나잇
개인공간 2023. 5. 4. 05:47

제 1회 코딩올나잇 시작하기 앞서 이렇게 하는 것은 미련한 행동이라고 생각한다. 잠은 정말 중요하기 때문 유튜브 링크 그럼에도 불구하고 코딩올나잇 왜해? 사실 해커톤에서 감명받아 시작해본 것이다. 대신 엄청 큰 결과물을 만드는 것은 아니다. 24시간 동안 코딩을 하는 열정과 에너지를 쏟자는 마인드에서 오는 취지라고 좋게 포장할 수 있다. 사실 할게 너무 밀렸다는 것... 24시간동안은 아니다. 6시 정도에 끝내볼 생각이다. 목표 중요도에 따라 순서 작성 📓 알고리즘 스터디 문제 pull 백준 2문제 우테코 이력서 작성 week 과제 제출 토이프로젝트 제출 블로그 작성 강의 듣기 시작 23시 🕝 스터디 알고리즘 문제 BOJ 1620🐕 나는야 포켓몬 마스터 이다솜 백준 풀이 HashMap HashMap 포켓..

article thumbnail
Blog? 왜 작성해?
개인공간/etc 2023. 4. 29. 17:42

Blog? 왜 작성해? 글 쓰기에 앞서 예전 글을 모두 살펴 보았다. 기록하기 위해 글을 쓴 것도 있고, 의무감에 쓴 글도 있고, 나름 추억이 있는 글들이 많았다. 하지만 의미있는 글쓰기가 아닌 글들이 너무 많았고, 이를 반성하는 시간을 많이 가졌다. 목적성을 잃은 글, 의미가 없는 글을 지양하고자 마인드셋 차원에서 작성한다. Blog 글쓰기의 의미 오롯이 나 자신을 위한 글 주체가 내가 되어 내 자신을 위해 쓰임이 있는 게시물이어야 하는 것 나만의 언어로 정리한, 내 생각이 들어가 있는 글 의미 있는 공부를 위한 글 의무감으로 글을 쓰는 것은 안쓰는 것만 못하다고 생각한다. 공부하고 있는 개념을 확실히 깨달았고, 이 깨달음을 토대로 글을 작성하자. Log의 중요성 기억만 하고 끝이 아닌, 기록하여 흔적..

article thumbnail
5.20 서울신문마라톤 준비
개인공간/운동 2023. 4. 13. 14:27

마라톤 준비 💻개발자 취준 중 요즘 체력이 떨어지는걸 절실히 느낀다. 운동을 좋아하고 꾸준히 하지만 시간이 지남에 따라 내가 부지런하지 않으면 뒤쳐지는 것을 느낀다. 부지런하게 살기 위해 몸부림을 치는 와중 친구와 10Km 달리기 마라톤을 나가기로 했고, 아직 체력이 안되지만 실행하기 위해서는 마라톤에 일단 지원해 일정을 잡는 것이었다..! 🏃5월 20일 서울 신문 마라톤 준비 오래 달리기를 잘하는 편은 아니지만 농구도 일요일마다 꾸준히 하고 있고, 헬스는... 조금 쉬고 있다. 다시 시작해야한다. 오래달리기는 군대 이후로 못한다고 생각하며 살았는데 마라톤 지원한 마당에 하자는 마음을 꺾을 수는 없다. 이번 계획은 10Km를 1시간 안에 들어오는 기록을 세우고 싶다. (친구는 현재 10Km 50분 컷) ..

[Algorithm] LeetCode #6 Maximum Product Subarray
LeetCode 2022. 5. 12. 21:07

Problems Maximum Product Subarray Medium Given an integer array nums, find a contiguous non-empty subarray within the array that has the largest product, and return the product. The test cases are generated so that the answer will fit in a 32-bit integer. A subarray is a contiguous subsequence of the array. 인접한 원소들과 곱샘을 했을 때, 가장 큰 결과값을 반환 Example 1: Input: nums = [2,3,-2,4] Output: 6 Explanation..

반응형