목록분류 전체보기 (512)
공부한것들을 정리하는 블로그 입니다.
보호되어 있는 글입니다.
보호되어 있는 글입니다.
보호되어 있는 글입니다.
보호되어 있는 글입니다.
보호되어 있는 글입니다.
보호되어 있는 글입니다.
1. 경우의 수 • N명의 사람이 한 줄로 서는 경우의 수 → N × (N-1) × … × 1 = N! • N명의 사람 중에서 대표 두 명을 뽑는 경우의 수 → N × (N-1) / 2 • N명의 사람 중에서 대표 세 명을 뽑는 경우의 수 → N × (N-1) × (N-2) / 3! • N명의 사람 중에서 반장 1명과 부반장 1명을 뽑는 경우의 수 → N × (N-1) • N명의 사람이 있을 때, 각 사람이 영화를 볼지, 보지 않을지 결정한다. 가능한 조합의 수 → 2N 2. 그냥 다 해보기 예제 : 일곱 난쟁이 https://drsggg.tistory.com/537 브루트 포스 2309번 일곱 난쟁이 https://www.acmicpc.net/problem/2309 2309번: 일곱 난쟁이 아홉 개의 ..

https://www.acmicpc.net/problem/2309 2309번: 일곱 난쟁이 아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어진다. 주어지는 키는 100을 넘지 않는 자연수이며, 아홉 난쟁이의 키는 모두 다르며, 가능한 정답이 여러 가지인 경우에는 아무거나 출력한다. www.acmicpc.net import java.util.Arrays; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int[] intArr = new int[9]; int sum = 0; int highA = 0; int highB = 0; //난쟁이 9명의..
브루트 포스(Brute Force) 브루트 포스는 '모든 경우의 수'를 다 해보는 것이다. 이 때, 경우의 수를 다 해보는데 걸리는 시간이 문제의 시간 제한을 넘지 않아야 한다. ( * '모든 경우의 수' : 가능한 벙법 ) 따라서 브루트 포스 문제의 경우 '모든 경우의 수'가 몇가지 나오는지 알아보는 것이 상당히 중요 브루트 포스는 모든 방법을 1번씩 시도해보기 때문에 아래 3가지 단계를 생각해볼 수 있다. 1. 문제의 가능한 경우의 수를 계산해본다. • 직접 계산을 통해서 구한다. 대부분 손으로 계산해볼 수 있다. 2. 가능한 모든 방법을 다 만들어본다. • 하나도 빠짐 없이 만들어야 한다. • 대표적으로 그냥 다 해보는 방법, for문 사용, 순열 사용, 재귀 호출 사용, 비트마스크 사용이 있다. ..
보호되어 있는 글입니다.
보호되어 있는 글입니다.
스프링 이야기에 왜 객체 지향 이야기가 나오는가? • 스프링은 다음 기술로 다형성 + OCP, DIP를 가능하게 지원 • DI(Dependency Injection): 의존관계, 의존성 주입 • DI 컨테이너 제공 • 클라이언트 코드의 변경 없이 기능 확장 • 쉽게 부품을 교체하듯이 개발 정리 • 모든 설계에 역할과 구현을 분리하자. • 자동차, 공연의 예를 떠올려보자. • 애플리케이션 설계도 공연을 설계 하듯이 배역만 만들어두고, 배우는 언제든지 유연하게 변경할 수 있도록 만드는 것이 좋은 객체 지향 설계다. • 이상적으로는 모든 설계에 인터페이스를 부여하자 실무 고민 • 하지만 인터페이스를 도입하면 추상화라는 비용이 발생한다. • 기능을 확장할 가능성이 없다면, 구체 클래스를 직접 사용하고, 향후 꼭..
클린코드로 유명한 로버트 마틴이 좋은 객체 지향 설계의 5가지 원칙을 정리 • SRP: 단일 책임 원칙(single responsibility principle) • OCP: 개방-폐쇄 원칙 (Open/closed principle) • LSP: 리스코프 치환 원칙 (Liskov substitution principle) • ISP: 인터페이스 분리 원칙 (Interface segregation principle) • DIP: 의존관계 역전 원칙 (Dependency inversion principle 1. SRP 단일 책임 원칙 Single responsibility principle • 한 클래스는 하나의 책임만 가져야 한다. • 하나의 책임이라는 것은 모호하다. • 클 수 있고, 작을 수 있다. •..
우리가 작성하는 모든 클래스는 외부 클래스에서 이용할 목적으로 설계된 라이브러리 클래스이다. 라이브러리 클래스를 설계할 때에는 외부 클래스에서 접근할 수 있는 멤버와 접근할 수 없는 멤버로 구분해서 필드, 생성자, 메소드를 설계하는 것이 바람직하다. 객체 생성을 막기 위해 생성자를 호출하지 못하게 하거나, 객체의 특정 데이터를 보호하기 위해 해당 필드에 접근하지 못하도록 막아야 한다. 그리고 특정 메소드를 호출할 수 없도록 제한할 필요가 있다. 자바는 이러한 기능을 구현하기 위해 접근 제한자를 제공하고 있다. * 객체생성 member input = new member(); member output = null; 1. new 연산자가 호출되면 생성될 객체(input)의 메모리가 할당된다. 2. 생성자가 생..
싱글톤(Singleton) 디자인패턴 이란? 가끔 전체 프로그램에서 단 하나의 객체만 만들도록 보장해야 하는 경우가 있다. 단 하나만 생성된다고 해서 이 객체를 싱글톤(Singleton)이라고 한다. 싱글톤을 만들려면 클래스 외부에서 new 연산자로 생성자를 호출할 수 없도록 막아야 한다. 생성자를 호출한 만큼 객체가 생성되기 때문이다. 생성자를 외부에서 호출할 수 없도록 하려면 생성자 앞에 private 접근 제한자를 붙여주면 된다. 그리고 자신의 타입인 정적 필드를 하나 선언하고 자신의 객체를 생성해 초기화한다. 이때 정적 필드도 private 접근 제한자를 붙여 외부에서 필드값을 변경하지 못하도록 막는다. 대신 외부에서 호출할 수 있는 정적 메소드인 getInstance()를 선언하고 정적 필드에서..

이것보다 직관성 높은 이미지를 본적은 아직 없네요 참고 https://pearlluck.tistory.com/m/46
보호되어 있는 글입니다.
보호되어 있는 글입니다.
보호되어 있는 글입니다.
보호되어 있는 글입니다.