분류 전체보기 125

백준 11049 행렬 곱셈 순서 [JAVA]

해당 문제는 dp 문제로 규칙만 찾으면 쉽게 풀 수 있는 문제다.생각보다 어려웠다.풀이를 참고하여 풀었지만 너무 어려웠던 만큼 복습을 해보도록 하자문제크기가 N×M인 행렬 A와 M×K인 B를 곱할 때 필요한 곱셈 연산의 수는 총 N×M×K번이다. 행렬 N개를 곱하는데 필요한 곱셈 연산의 수는 행렬을 곱하는 순서에 따라 달라지게 된다.예를 들어, A의 크기가 5×3이고, B의 크기가 3 ×2, C의 크기가 2 ×6인 경우에 행렬의 곱 ABC를 구하는 경우를 생각해 보자.AB를 먼저 곱하고 C를 곱하는 경우 (AB)C에 필요한 곱셈 연산의 수는 5×3×2 + 5×2×6 = 30 + 60 = 90번이다.BC를 먼저 곱하고 A를 곱하는 경우 A(BC)에 필요한 곱셈 연산의 수는 3×2×6 + 5×3×6 = 36..

알고리즘 2024.10.17

[스프링 핵심 원리 - 기본편] 스프링 컨테이너와 스프링 빈 3

다양한 설정 형식 지원 - 자바 코드, XML스프링 컨테이너는 다양한 형식의 설정 정보를 받아들일 수 있게 유연하게 설계되어있다.자바 코드, XML, Groovy 등등애노테이션 기반 자바 코드 설정 사용new AnnotationConfigApplicationContext(AppConfig.class)AnnotationConfigApplicationContext 클래스를 사용하면서 자바코드로 설정된 정보를 넘기면 된다.xml 설정 사용최근에는 스프링 부트를 많이 사용하면서 xml 기반의 설정은 잘 사용하지 않는다. 아직 많은 레거시 프로젝트들이 xml 로 되어있고, 또 xml 을 사용하면 컴파일없이 빈 설정 정보를 변경할 수 있다는 장점이 있으므로 한번쯤 배워두는 것도 괜찮다.GenericXmlApplic..

Spring 2024.10.16

[스프링 핵심 원리 - 기본편] 스프링 컨테이너와 스프링 빈 2

컨테이너에 등록된 모든 빈 조회스프링 컨테이너에 실제 스프링 빈들이 잘 등록되었는지 확인해 보자package hello.core.beanfind;import hello.core.AppConfig;import org.junit.jupiter.api.DisplayName;import org.junit.jupiter.api.Test;import org.springframework.beans.factory.config.BeanDefinition;import org.springframework.context.annotation.AnnotationConfigApplicationContext;public class ApplicationContextInfoTest { AnnotationConfigApplicati..

Spring 2024.10.16

[스프링 핵심 원리 - 기본편] 스프링 컨테이너와 스프링 빈 1

스프링 컨테이너(=IoC 컨테이너) 종류스프링 컨테이너가 관리하는 객체를 빈(Bean)이라고  하고,이 빈들을 관리한다는 의미로 컨테이너를 빈 팩토리(BeanFactory)라고 부릅니다.객체의 생성과 객체 사이의 런타임 관계를 DI 관점에서 볼 때 BeanFactory라고 한다.BeanFactory에 여러 가지 컨테이너 기능을 추가한 애플리케이션콘텍스트(ApplicationContext)가 있다.BeanFactory와 ApplicationContext BeanFactory BeanFactory는 스프링컨테이너의 최상위 인터페이스이다.BeanFactory 계열의 인터페이스만  구현한 클래스는 단순히 컨테이너에 객체를 생성하고 DI를 처리하는 기능만 제공한다.Bean을 등록, 생성, 조회, 반환 관리를 한다..

Spring 2024.10.15

[스프링 핵심 원리 - 기본편] 스프링 핵심 원리 이해3 - 객체 지향 원리 적용

https://newfangled.tistory.com/31 [스프링 핵심 원리 - 기본편] 스프링 핵심 원리 이해2 - 객체 지향 원리 적용https://newfangled.tistory.com/28 [스프링 핵심 원리 - 기본편] 스프링 핵심 원리 이해1 - 예제만들기비즈니스 요구사항과 설계아래와 같은 요구사항을 보면  회원데이터, 할인 정책 같은 부분은 지금newfangled.tistory.com위의 내용과 이어지는 포스팅입니다. IoC , DI , 컨테이너 제어의 역전(IoC) 란?제어의 역전이란 모든 객체에 대한 (생성, 라이플사이클 등) 제어권을 개발자가 아닌 IoC 컨테이너에게 넘긴 것을 말한다. 스프링에서는 IoC 컨테이너에 객체들을 생성하면 객체끼리 의존성을 주입하는 역할을 하고 컨테이너..

Spring 2024.10.14

[스프링 핵심 원리 - 기본편] 스프링 핵심 원리 이해2 - 객체 지향 원리 적용

https://newfangled.tistory.com/28 [스프링 핵심 원리 - 기본편] 스프링 핵심 원리 이해1 - 예제만들기비즈니스 요구사항과 설계아래와 같은 요구사항을 보면  회원데이터, 할인 정책 같은 부분은 지금 결정하기 어려운 부분이다.그치만 정책이 결정 나기 전까지 기다릴 수만은 없다.이때 우리는newfangled.tistory.com위의 내용과 이어지는 포스팅입니다.  새로운 할인 정책 개발새로운 할인 정책을 확장해 보자! 기획자가 할인정책을 고정금액이 아닌 VIP 고객인 경우 10% 할인이 되도록 정책을 바꾸고 싶어 하는 상황이다.개발자는 정책이 바뀌어도 걱정이 없다.왜냐하면 유연한 설계가 가능하도록 객체지향 설계 원칙을 준수했기 때문이다. ^*^  RateDiscountPolicy ..

Spring 2024.10.11

[JAVA] ORM 이란? MyBatis 와 JPA 차이

ORM 은 무엇이며 MyBatis와 JPA는 어떤 상황에서 쓸까?ORM(Object Relational Mapping) 이란?ORM 이란 객체(Object) 와 DB의 테이블을 Mapping 시켜 RDB 테이블을 객체 지향적으로 사용하게 해주는 기술입니다.JAVA 에서 대표적인 ORM으로는 JPA와 그의 구현체 Hibernate 가 있다. JPA (Java Persistent API) 등장 이전에는 MyBatis라는 Object Mapping 기술을 사용하였다.MyBatis는 Java 클래스 코드를 직접 작성한 SQL 코드에 Mapping 시켜 주어야 한다.반면 JPA와 같은 ORM 기술은 객체가 DB에 연결되기 때문에, SQL을 직접 작성하지 않고 표준 인터페이스 기반으로 처리한다는 점에서 차이가 있..

JAVA 2024.10.11

[JAVA] 자바 버전과 특징 8 ,11

자바 8과 같은 일부 버전을 왜  1.8 이라고 할까? 9 이전의 JAVA 버전은 단순히 다른 명명 체계를 사용했습니다.따라서 Java 8 은 1.8, Java 5 는 1.5  등으로 불릴 수 있습니다.'java -version' 명령을 실행하면 아래와 같이 출력됩니다.c:\Program Files\Java\jdk1.8.0_191\bin>java -versionjava version "1.8.0_191" (1)Java(TM) SE Runtime Environment (build 1.8.0_191-b12)Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode) 이는 단순히 Java 8 을 의미합니다. Java 9 이후부터는 Java version ..

JAVA 2024.10.10

[스프링 핵심 원리 - 기본편] 스프링 핵심 원리 이해1 - 예제만들기

비즈니스 요구사항과 설계아래와 같은 요구사항을 보면  회원데이터, 할인 정책 같은 부분은 지금 결정하기 어려운 부분이다.그치만 정책이 결정 나기 전까지 기다릴 수만은 없다.이때 우리는 객체 지향 설계 방법을 활용하면 된다. 인터페이스를 만들고 언제든지 구현체를 갈아 끼울 수 있도록 설계하면 된다. 회원회원을 가입하고 조회할 수 있다.회원은 일반과 VIP 두 가지 등급이 있다.회원 데이터는 자체 DB를 구축할 수 있고, 외부 시스템과 연동할 수 있다. (미확정)주문과 할인 정책회원은 상품을 주문할 수 있다. 회원 등급에 따라 할인 정책을 적용할 수 있다.할인 정책은 모든 VIP는 1000원을 할인해주는 고정 금액 할인을 적용해 달라. (나중에 변경될 수 있다.)할인 정책은 변경 가능성이 높다. 회사의 기본..

Spring 2024.10.09

[스프링 핵심 원리 - 기본편]객체 지향 설계와 스프링

스프링 단어?스프링이란 단어는 문맥에 따라 다르게 사용된다.스프링 DI 컨테이너 기술스프링 프레임워크스프링 부트, 스프링 프레임워크 등을 모두 포함한 스프링 생태계 이 기술을 왜 만들었는가?이 기술의 핵심 컨셉은? 과거 범용적으로 쓰이던 EJB 은 EJB 에 종속적으로 개발을 해야하는 불편함이 있었고 객체지향 프로그램밍을 잘 개발할 수 있게 스프링이 등장하였다. 스프링은 자바 언어 기반의 프레임워크자바 언어의 가장 큰 특징 - 객체 지향 언어스프링은 객체 지향 언어가 가진 강력한 특징을 살려내는 프레임워크스프링은 좋은 객체 지향 애플리케이션을 개발할 수 있게 도와주는 프레임워크 좋은 객체 지향 프로그래밍이란?스프링을 제대로 이해하기 이해서 다형성과 SOLID 을 알아야한다. 다형성이란?하나의 객체가 여러..

Spring 2024.10.08