목록분류 전체보기 (184)
이숭간 공부기록
www.acmicpc.net/problem/2630 2630번: 색종이 만들기 첫째 줄에는 전체 종이의 한 변의 길이 N이 주어져 있다. N은 2, 4, 8, 16, 32, 64, 128 중 하나이다. 색종이의 각 가로줄의 정사각형칸들의 색이 윗줄부터 차례로 둘째 줄부터 마지막 줄까지 주어진다. www.acmicpc.net 문제유형 : 분할정복, 재귀 문제풀이 : 아이디어 생각 자체는 어렵지 않은데 구현에서 먼가 꼬여서 생각보다 오래품 주어진 종이크기를 4등분하는함수 / 주어진종이가 모두 0인가(흰색정사각형인가)를 판단하는 함수 / 반대로 파랑인지 확인함수 이렇게 3개의 함수를 구현하고 풀었다 정답코드 import sys input = sys.stdin.readline n = int(input()) #종..
https://www.acmicpc.net/problem/16234 16234번: 인구 이동 N×N크기의 땅이 있고, 땅은 1×1개의 칸으로 나누어져 있다. 각각의 땅에는 나라가 하나씩 존재하며, r행 c열에 있는 나라에는 A[r][c]명이 살고 있다. 인접한 나라 사이에는 국경선이 존재한다. 모 www.acmicpc.net 문제유형 : 구현, 그래프탐색 (삼성기출) 문제풀이 BFS(DFS도 가능)를 통해 연합가능한 국가를 찾도록 한다. 전체국가를 돌면서 bfs로 연합가능한 국가의덩어리들을 찾고 각 덩어리들사이에서 인구이동을 진행한다. 모든칸(전체국가)을 돌았는데 인구이동이 한번도 없었다면 더이상 진행이 불가한것을 의미하므로 while문을 break하고 빠져나온다. 인구이동이 있었다면, 다시 visite..
https://www.acmicpc.net/problem/14889 14889번: 스타트와 링크 예제 2의 경우에 (1, 3, 6), (2, 4, 5)로 팀을 나누면 되고, 예제 3의 경우에는 (1, 2, 4, 5), (3, 6, 7, 8)로 팀을 나누면 된다. www.acmicpc.net 문제유형 : 브루트포스 문제풀이 : 조합을 이용한 완전탐색 nCn//2를 통해 팀을 반으로 나눌수있는 모든 경우를 구한다. 각각의 경우에서 다시 n//2C2를 통해 2명씩 시너지를 구해서 팀의 능력치를 구한다. 팀을 반으로 나눌수있는 모든 경우에 대해 팀의 능력치를 구했다면, 매칭되는 반대팀의 능력치와의 차이를 구해서 최소를 출력. 매칭되는 팀은 조합을 모두 구한후에 반으로 나누고 뒤엣부분을 거꾸로 뒤집으면 순서대로 ..
@RequiredArgsConstructor 초기화되지 않은 final필드나, @NonNull이 붙은 필드에 대해 생성자를 생성해준다. 주로 의존성 주입 편의성을 위해 사용된다. 해당 어노테이션으로 의존성주입이 가능한이유는 다음과 같다. - 어떠한 빈에 생성자가 오직 하나만 있고 생성자의 파라미터 타입이 빈으로 등록가능한것이면 이 빈은 @Autowired없이도 의존성주입이 가능 즉, 생성자 안만들고 생성자주입이 가능하다!! @NoArgsConstructor 파라미터가 없는 기본생성자를 생성해준다. 사용시 주의점 1. 필드들이 final로 생성되어있는 경우에는 필드를 초기화할수 없기 때문에 생성자를 만들수 없고 에러가발생 (final키워드가 붙은 필드들은 선언과동시에 초기화하고 이후에 값을 수정할수 없으니..
Spring프레임워크의 3가지 핵심 프로그래밍 모델중 하나로, 외부에서 두 객체간의 관계를 결정해주는 디자인패턴으로 인터페이스를 사이에 두고 클래스 레벨에서는 의존관계가 고정되지 않도록 하고 런타임시에 관계를 동적으로 주입하여 결합도를 낮출수 있게 하는 기법이다. DI (Dependency Injection) 의존성 주입은 IoC(Invesoin of Control, 의존성 역전) 원칙하에 객체간의 결합을 약하게해주고 유지보수가좋은 코드를 만들어준다. 즉, 외부에서 생성된 객체를 이용하는 것이다. 한 객체가 어떤 객체에 의존할것인지는 별도의 관심사이다. DI컨테이너를 통해 서로 강하게 결합되어있는 두 클래스를 분리하고, 두 객체간 관계를 결정해줌으로서 결합도를 낮추고 유연성을 확보하고자 한다. (이때 다..
DAO DB에 접근하여 데이터의 조회 및 조작의 기능을 전담하는 객체 Data Access Object의 약자로 데이터베이스의 데이터에 접근하기 위해 생성하는 객체이다. 데이터베이스에 접근하기 위한 로직과 비즈니스 로직을 분리하기 위해 사용한다. 즉, DB에 접속하여 데이터의 CRUD작업을 하는 클래스이다. Spring Data JPA에서는 JpaRepository를 상속받는 인터페이스가 DAO의 역할을 하게된다. DTO 순수 데이터 객체 (데이터를 담고있는 객체) Data Transfer Object의 약자로 계층간 데이터 교환을 위한 자바빈즈를 뜻한다. DTO는 VO(value object)와 혼용해서 사용하는데 VO는 읽기만 가능한 read only의 속성을 가져 DTO와 차이가 있다. 일반적으로 ..