일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 후니의쉽게쓴시스코네트워킹
- 동적계획법
- 순열
- 실업인정인터넷신청
- 프로그래머스
- leetcode
- 사회초년생
- 자취준비
- array
- 후니의쉽게쓴시스코라우팅
- C++
- 청년내일채움공제
- 정보처리기사개정
- 생애첫계약
- 실업급여
- 정보
- 알고리즘
- 모여봐요동물의숲
- HeadFirstDesignPatterns
- 전화영어
- IT기초
- 취업사실신고
- 자료구조
- 캡쳐링
- 튜터링
- 부분합알고리즘
- 코딩테스트
- 막대기자르기
- 네트워크
- 회사폐업
- Today
- Total
목록프로그래밍 (78)
따봉도치야 고마워
https://programmers.co.kr/learn/courses/30/lessons/67256 코딩테스트 연습 - 키패드 누르기 [1, 3, 4, 5, 8, 2, 1, 4, 5, 9, 5] "right" "LRLLLRLLRRL" [7, 0, 8, 2, 8, 3, 1, 5, 7, 6, 2] "left" "LRLLRRLLLRR" [1, 2, 3, 4, 5, 6, 7, 8, 9, 0] "right" "LLRLLRLLRL" programmers.co.kr 풀이 가운데 키패드와 거리를 어떻게 재느냐가 문제였는데, 배열 x,y 좌표의 차이로 계산을 했다. 빠르게 찾기 위해 키패드 값을 key로 x, y 값을 계산해서 넣었다 x = 숫자 idx / 3 y = 숫자 idx % 3 위와 같이 계산 시 첫 행에 있..
https://programmers.co.kr/learn/courses/30/lessons/42862 코딩테스트 연습 - 체육복 점심시간에 도둑이 들어, 일부 학생이 체육복을 도난당했습니다. 다행히 여벌 체육복이 있는 학생이 이들에게 체육복을 빌려주려 합니다. 학생들의 번호는 체격 순으로 매겨져 있어, 바로 앞번 programmers.co.kr 풀이 놓치기 쉬운 핵심 2가지만 신경쓰니까 바로 풀렸다 도둑 맞은 학생이 여벌 옷이 있는 경우 : 미리 lost, reserve에서 소거 input 값이 정렬되지 않은 경우 : 순서에 상관없이 짜거나, sort Code 1. function solution(n, lost, reserve) { var answer = 0; const tmpLost = lost.sli..

컴파운드 패턴 두 개 이상의 패턴을 결합해 일반적으로 자주 등장하는 문제들에 대한 해법을 제공 SimUDuck 1장에서 사용했던 예제를 처음부터 다시 만들어보자 (bb-dochi.tistory.com/72) 1. Quackable 인터페이스 정의 public interface Quackable{ public void quack(); } 각 오리 클래스에서 종류에 맞게 구현하고 ex) MallardDuck, RedheadDuck 시뮬레이터를 생성해 테스트 해보자 void simulate(){ Quackable mallardDuck = new MallardDuck(); Quackable duckCall = new DuckCall(); Quackable rubberDuck = new rubberDuck(); ..

프록시 패턴 어떤 객체에 대한 접근을 제어하기 위한 용도로 대리인이나 대변인에 해당하는 객체를 제공하는 패턴 원격 객체 / 생성하기 힘든 객체 / 보안이 필요한 객체에 대한 대변자 객체 생성 프록시 패턴의 수많은 변종 - "접근을 제어하는 방법"에서 차이가 있음 원격 프록시를 사용해 원격 객체에 대한 접근 제어 가상 프록시를 사용해 생성하기 힘든 자원에 대한 접근 제어 보호 프록시를 사용해 접근 권한이 필요한 자원에 대한 접근 제어 프록시 원격 객체에 대한 로컬 대변자 원격 객체 : 다른 JVM에 있는 객체 ex) 뽑기기계 로컬 대변자 : 로컬 대변자의 메소드를 호출하면 원격 객체의 메소드를 호출하는 것처럼 행동 = 1. 클라이언트는 원격 서비스에 있는 메소드를 호출한다고 생각하고 작업 처리 2. 실제로..

스테이트 패턴 객체의 내부 상태가 바뀜에 따라서 객체의 행동을 바꿀 수 있음 마치 객체의 클래스가 바뀌는 것과 같은 결과 Q. 스테이트 패턴과 스트래티지 패턴의 다이어그램이 같은 것 같은데? 다이어그램은 같지만 용도의 차이 스테이트 패턴 스트래티지 패턴 - 상황에 따라 Context에서 여러 상태 객체 중 하나에 행동 위임 - 내부 상태가 변경됨에 따라 컨텍스트의 행동도 자연스럽게 바뀜. - 즉 클라이언트는 상태 객체에 대해 몰라도 됨 - 수많은 조건문 대신에 사용 - 일반적으로 클라이언트에서 컨텍스트한테 전략 객체를 결정해줌 - 실행 시 전략 객체를 변경할 수 있는 유연성 제공을 위해 사용 - 상속보다 구성을 이용한 유연성 극대화 Q. 반드시 구상 상태 클래스에서 다음 상태가 변경되어야 하는 건지? 아..

이터레이터(Iterator) 패턴 컬렉션 구현 방법을 노출시키지 않으면서도 모든 항목에 접근할 수 있게 해주는 방법을 제공 (반복 작업 캡슐화) 또한 각 항목에 접근하는 기능을 집합체가 아닌 반복자 객체에서 책임져 집합체 인터페이스 및 구현이 간단해짐 + 컬렉션과 반복자 : 자바 Collection 인터페이스에선 집합체를 조작하기 위한 여러가지 유용한 메소드들을 포함하고 있음 : 그 중 하나가 iterator() 객체 마을 식당과 팬케이크 하우스의 합병 식당은 (점심) 메뉴를 ArrayList로, 하우스는 (아침메뉴를) 배열로 저장하고 있음. 두 가게의 메뉴 구현 방식이 달라 메뉴를 출력하고, 구별하는 웨이트리스 클래스를 만드는데 어려움이 생김 각 타입에 맞춰 두 번씩 반복해야 함 (식당이 추가되면 그만..
템플릿 메소드 패턴 메소드에서 알고리즘의 골격(틀)을 정의하고, 여러 단계 중 일부는 서브 클래스에서 구현할 수 있다. 템플릿 메소드를 이용하면 알고리즘의 구조는 그대로 유지하면서 서브클래스에서 특정 단계를 재정의 할 수 있다. 예제 커피와 차를 만드는 클래스를 추상화 해보자 Coffee Tea 1. 물을 끓인다. 2. 끓는 물에 커피를 우려낸다. 3. 커피를 컵에 따른다. 4. 설탕과 우유를 추가한다. 1. 물을 끓인다. 2. 끓는 물에 차를 우려낸다. 3. 차를 컵에 따른다. 4. 레몬을 추가한다. 기존 커피/차 클래스 public class Coffee{ void prepareRecipe(){ boilWater(); brewCoffeeGrinds(); pourInCup(); addSugarAndMi..

어댑터 패턴 한 클래스의 인터페이스를 다른 클라이너트에서 사용하고자 하는 다른 인터페이스로 변환한다. 어탭터를 이용하면 인터페이스 호환성 문제 때문에 같이 쓸 수 없는 클래스들을 연결해서 사용 가능. 클라이언트는 타겟 인터페이스에 맞게 구현이 되어있고, 그걸 통해 메소드 호출 어댑터는 타겟 인터페이스를 구현하며 *어댑티 객체를 가지고 있음 어댑터는 어댑티 객체를 사용해 클라이언트의 요청을 응답 클라이언트는 결과를 받지만 중간에 어댑터가 껴있는지 알지 못함 *어댑티 : 어댑터를 가운데 두고 클라이언트(타겟 인터페이스)와 반대의 위치에 있는 것 ex) 아래 예제에서 Turkey 객체지향 어댑터 - 말 그대로, 어떤 인터페이스를 클라이언트가 요구하는 형태의 인터페이스에 적응 시켜주는 역할 ex) 기존 시스템에..