전체 글

중요한 것은 꺾여도 그냥 하는 마음
· JPA
@Entity - @Entity가 붙은 클래스는 JPA가 관리, 엔티티라 한다 -JPA를 사용해서 테이블과 매핑할 클래스는 @Entity 어노테이션이 필수 주의점 - 기본 생성자 필수(파라미터가 없는 public 또는 protected 생성자) - final 클래스, enum, interface, inner 클래스에는 사용할 수 없음 - DB에 저장하고 싶은 필드에는 final을 사용하면 안됨 @Entity 속성 name - JPA에서 사용할 엔티티 이름을 지정 - 기본값 : 클래스 이름을 그대로 사용 - 같은 클래스 이름이 없으면 헤깔릴 수 있으므로 가급적 기본값 사용 @Table : 엔티티와 매핑할 테이블 지정 - name 속성을 통해 매핑할 테이블 이름을 지정해줄 수 있음 데이터베이스 스키마 자동 ..
https://www.acmicpc.net/problem/17609 17609번: 회문 각 문자열이 회문인지, 유사 회문인지, 둘 모두 해당되지 않는지를 판단하여 회문이면 0, 유사 회문이면 1, 둘 모두 아니면 2를 순서대로 한 줄에 하나씩 출력한다. www.acmicpc.net 풀이 사용한 알고리즘 : 투 포인터 풀이전략 1. 문자열의 시작점 인덱스를 start, 끝점 인덱스를 end로 둔다. 2. start 인덱스에 해당하는 문자와, end 인덱스에 해당하는 문자를 비교하여 일치하면 ++start, --end를 수행한다. 3. 만약 start 인덱스에 해당하는 문자와, end 인덱스에 해당하는 문자가 일치하지 않는다면 count를 1 증가시키고 start를 1 증가시켜 문자 하나를 제외한 경우와 e..
https://www.acmicpc.net/problem/1707 1707번: 이분 그래프 입력은 여러 개의 테스트 케이스로 구성되어 있는데, 첫째 줄에 테스트 케이스의 개수 K가 주어진다. 각 테스트 케이스의 첫째 줄에는 그래프의 정점의 개수 V와 간선의 개수 E가 빈 칸을 사이에 www.acmicpc.net 풀이 사용한 알고리즘: BFS 풀이전략 문제를 풀기 앞서 이분 그래프가 어떤 구조인지 알고 있어야 문제 풀이가 가능하다. 위와 같은 그래프가 있을 때, 인접한 노드끼리 서로 다른 색을 지니는 그래프를 이분 그래프라고 한다. 노드끼리 모두 연결되어 있지 않아도, 서로 인접한 노드끼리만 다른 색으로 구분될 수 있어도 이분그래프다. 이런 이분 그래프의 성질을 이용하여 BFS를 사용하면 문제를 풀 수 있..
목표 xml 대신 Java 코드를 통해 설정파일을 작성한다. 기존 xml 설정 파일 작성방식 위와 같이 xml로 작성된 설정파일을 Java 코드로 만들면 아래와 같다. Java 코드로 작성한 설정 파일 @ComponentScan("spring.di.ui") @Configuration public class NewlecDIConfig { @Bean public Exam exam() { return new NewlecExam(); } } @Configuration : Java로 작성한 설정 파일임을 알림 @ComponentSacn("spring.di.ui") = @Bean public Exam exam(){return new NewlecExam()} = 으로 똑같이 작성할 수 있다. @Bean 어노테이션은 ..
목표 xml 대신 @Component 어노테이션을 사용하여 객체를 생성한다. (@Component = @Controller, @Service, @Repository) 기존 xml 객체 생성 방식 public class GridExamConsole implements ExamConsole { private Exam exam; ...(생략)... @Autowired @Override public void setExam(Exam exam) { this.exam=exam; } } 여기서 console이라는 id를 가진 Dependency를 어노테이션을 활용해 생성해보자. @Componet 어노테이션을 활용한 객체 생성 방식 //컴포넌트 이름 지정 안 해주면 Class 네임으로 IoC 컨테이너에서 가져와야 함 @..
목표 xml 대신 @Autowired 어노테이션을 사용하여 DI 하는 방법을 알아본다 기존 xml DI 방식 public class Program { public static void main(String[] args) { ApplicationContext context = new ClassPathXmlApplicationContext("spring/di/setting.xml"); ExamConsole console = (ExamConsole) context.getBean("console"); console.print(); } } exam과 console이라는 이름을 가진 객체를 DI하고, context 라는 IoC 컨테이너를 통해 해당 객체들을 가져와 사용한 모습이다. 어노테이션을 사용한 DI 방식 p..
목표 이전 시간에는 bean태그의 ref 속성을 이용하여 참조 형식의 속성에 값을 설정했었다. 이번엔 value 속성을 이용하여 값 형식의 속성에 값을 설정해보자. 또 생성자를 통한 DI 방법과 콜렉션 DI 방법에 대해 알아본다. 값 형식의 속성에 값 설정하기 public class NewlecExam implements Exam{ private int kor; private int eng; private int math; private int com; public NewlecExam() { } public NewlecExam(int kor, int eng, int math, int com) { this.kor = kor; this.eng = eng; this.math = math; this.com = ..
목표 public class GridExamConsole implements ExamConsole { private Exam exam; public GridExamConsole() { } public GridExamConsole(Exam exam) { this.exam = exam; } @Override public void setExam(Exam exam) { this.exam=exam; } } 위 코드에서 볼 수 있듯이, Exam 클래스는 GridExamConsole이라는 클래스에 종속되어 있다. 이 때, Spring을 쓰지 않았을 경우와 썻을 경우 어떻게 DI를 수행하는지 살펴보자. 그리고 IoC 컨테이너에서 DI한 객체를 사용해보자. Spring을 쓰지 않은 DI 방식 public class Pr..
DI(Dependency Injection)란? 종속성 주입으로, 사용자가 원하는 객체 내부의 값(객체 등)을 Setter나 생성자를 통해 설정해주는 것이다. Composition has a (일체형) class A { private B b; public A(){ b = new B(); } } B가 A 내부에서 정해진다. Association has a (조립형) class A { private B b; public A(){ } public void setB(B b){ this.b=b; } } B를 A 외부에서 setter를 통해 가져와 정한다. 이 때 조립형에서 DI를 설명할 수 있는데 B b = new B(); // Dependency - 부품 A a = new A(); a.setB(b); // In..
https://www.acmicpc.net/problem/11403 11403번: 경로 찾기 가중치 없는 방향 그래프 G가 주어졌을 때, 모든 정점 (i, j)에 대해서, i에서 j로 가는 길이가 양수인 경로가 있는지 없는지 구하는 프로그램을 작성하시오. www.acmicpc.net 풀이 사용한 알고리즘: 플로이드 워셜(Floyd Warshall) 풀이전략 플로이드 워셜 알고리즘을 사용하여 모든 출발지에서 도착지까지의 최단 거리를 구한다. 단, 기존 플로이드 워셜 알고리즘에서는 자기 자신에게 가는 거리를 0으로 두고 알고리즘을 실행했지만 이 문제에서는 거리가 아닌 경로의 유무 판단이 중요 쟁점이기 때문에 모든 배열의 원소를 INF(무한)으로 초기설정한다. 그리고 입력에서 1로 경로가 있는 경우에만 배열 ..
째로스
개발일지