본문 바로가기

전체 글846

백준 1018 1018번: 체스판 다시 칠하기 문제 지민이는 자신의 저택에서 MN개의 단위 정사각형으로 나누어져 있는 M×N 크기의 보드를 찾았다. 어떤 정사각형은 검은색으로 칠해져 있고, 나머지는 흰색으로 칠해져 있다. 지민이는 이 보드를 잘라서 8×8 크기의 체스판으로 만들려고 한다. 체스판은 검은색과 흰색이 번갈아서 칠해져 있어야 한다. 구체적으로, 각 칸이 검은색과 흰색 중 하나로 색칠되어 있고, 변을 공유하는 두 개의 사각형은 다른 색으로 칠해져 있어야 한다. 따라서 이 정의를 따르면 체스판을 색칠하는 경우는 두 가지뿐이다. 하나는 맨 왼쪽 위 칸이 흰색인 경우, 하나는 검은색인 경우이다. 보드가 체스판처럼 칠해져 있다는 보장이 없어서, 지민이는 8×8 크기의 체스판으로 잘라낸 후에 몇 개의 정사각형을 다시 .. 2023. 9. 15.
Spring MVC MVC란? MVC는 소프트웨어 디자인 패턴으로, 애플리케이션을 세 가지 구성 요소로 분리하여 구조화하는 방법이다. 모델(Model) : 애플리케이션의 데이터와 비즈니스 로직을 나타낸다. 모델은 데이터의 상태를 관리하고, 데이터 변경 시 알림을 View에 전달한다. 뷰(View) : 데이터를 사용자 인터페이스로 표시허고, 사용자에게 정보를 제공한다. 뷰는 모델의 데이터를 표시하기 위해 모델에게 의존하며, 데이터가 변경되면 갱신된다. 컨트롤러(Controller) : 사용자의 입력을 받고 모델 및 뷰 간의 상호작요을 조정한다. 컨트롤러는 요청을 처리하고 모델을 업데이트 하며, 업데이트된 데이터를 뷰에 전달한다. Spring MVC란? Spring MVC는 Java 기반 웹 애플리케이션을 개발할 때 MVC 아.. 2023. 9. 15.
@Bean, @Configuration @Bean @Bean 어노테이션을 사용해 수동으로 빈을 등록할 수도 있다. 개발자가 직접 제어가 불가능한 라이브러리를 활용할 때 애플리케이션 전범위적으로 사용되는 클래스를 등록할 때 다형성을 활용하여 여러 구현체를 등록해주어야 할 때 @Bean을 이용한 수동 빈 메서드는 스프링 빈 안에만 구현되어 있다면 모두 동작한다. @Configuration @Cobnfiguration 어노테이션 내부에는 @Component 어노테이션이 붙어 있어 @Configuration이 붙어 있는 클래스도 스프링 빈으로 등록된다. @Configuration을 따로 만든 이유는 CGLIB로 프록시 패턴을 적용해 수동으로 등록하는 스프링 빈이 반드시 싱글톤으로 생성됨을 보장하기 위해서이다. 즉 @Bean 메서드를 여러번 호출하여도.. 2023. 9. 14.
백준 1436 1436번: 영화감독 숌 문제 666은 종말을 나타내는 수라고 한다. 따라서, 많은 블록버스터 영화에서는 666이 들어간 제목을 많이 사용한다. 영화감독 숌은 세상의 종말 이라는 시리즈 영화의 감독이다. 조지 루카스는 스타워즈를 만들 때, 스타워즈 1, 스타워즈 2, 스타워즈 3, 스타워즈 4, 스타워즈 5, 스타워즈 6과 같이 이름을 지었고, 피터 잭슨은 반지의 제왕을 만들 때, 반지의 제왕 1, 반지의 제왕 2, 반지의 제왕 3과 같이 영화 제목을 지었다. 하지만 숌은 자신이 조지 루카스와 피터 잭슨을 뛰어넘는다는 것을 보여주기 위해서 영화 제목을 좀 다르게 만들기로 했다. 종말의 수란 어떤 수에 6이 적어도 3개 이상 연속으로 들어가는 수를 말한다. 제일 작은 종말의 수는 666이고, 그 다음으로 .. 2023. 9. 11.
불변성 불변 클래스란 인스턴스의 내부 값을 수정할 수 없는 클래스이다. 즉, 내부 값이 변하지 않는 속성을 불변성이라 한다. 클래스 불변 생성 객체의 상태를 변경하는 메서드를 제공하지 않는다. 클래스를 확장할 수 없도록 한다. 모든 필드를 final로 선언한다. 모든 필드를 private으로 선언한다. 자신 외에는 내부의 가변 컴포넌트에 접근할 수 없도록 한다. 불변의 특징 불변 객체는 생성된 시점 부터 없어질 때 까지 변하지 않는다. 불변 객체는 스레드 안전하여 따로 동기화가 필요 없다. 여러 스레드가 동시에 사용도 훼손되지 않는다. 즉, 불변 객체는 안심하고 공유할 수 있다. 생성자는 불변식 설정이 모두 완료된, 초기화가 완벽히 끝난 상태의 객체를 생성해야 한다. 2023. 9. 8.
Spring DI 방식 스프링은 다양한 DI 방식을 지원하며, 주요한 방식에는 setter, constructor, field가 있다. Setter 장점 빈의 의존성을 설정하거나 변경하기 쉽다. 일부 의존성을 필수가 아닌 선택적으로 설정할 수 있다. 단점 필수 의존성이 설정되지 않았을 경우 런타임 오류가 발생할 수 있다. 설정된 값이 변경될 수 있으므로 불변성을 보장하지 않는다. 언제 사용 : 선택적 의존성을 갖는 빈을 생성할 때 또는 런타임에 의존성을 변경할 때 사용한다. 문제점 : 필수 의존성이 설정되지 않은 상태에서 빈을 생성하려고 할 때 런타임 예외가 발생할 수 있다. Constructor 장점 생성자를 통해 필수 의존성을 보장하므로 런타임 오류를 줄일 수 있다. 생성자를 통해 설정된 의존성은 변경이 불가능하므로 불변성.. 2023. 9. 8.