[Java] 백준 1012번 (유기농 배추)
·
BOJ, Programmers
https://www.acmicpc.net/problem/1012 1012번: 유기농 배추 차세대 영농인 한나는 강원도 고랭지에서 유기농 배추를 재배하기로 하였다. 농약을 쓰지 않고 배추를 재배하려면 배추를 해충으로부터 보호하는 것이 중요하기 때문에, 한나는 해충 방지에 www.acmicpc.net 전형적인 bfs 문제이다. Queue를 사용해서 풀었다. ​ 먼저 초기화 작업이다. 문제에 나와있듯이 각 케이스마다 m, n, k를 구해야 한다. StringTokenizer를 사용해 변수에 값을 넣었다. t = new StringTokenizer(br.readLine()); int m = Integer.parseInt(st.nextToken()); int n = Integer.parseInt(st.nextT..
(실습)객체지향 설계 원칙를 지키면서 설계하기
·
Spring Framework
먼저 레거시입니다. 클라이언트 클래스가 MemberRepository라는 인터페이스뿐만 아니라 MemoryMemberRepository라는 구체 클래스에도 의존하고 있다. ​ 그래서 DIP, OCP를 위반하고 있다. ​ 이해를 안갈 수 있으니 예를 들어보자. 만약 구체(구현) 클래스가 JpaRepository로 바뀌었다. 그러면 클라이언트 클래스 (MemberServiceImpl) 에서 new JpaRepository로 변경할 것이다. ​ 의존관계에서 구체 클래스를 의존하고 있어 DIP를 위반하고 있다. 그리고 만약 구체 클래스를 변경하려면 클라이언트 클래스를 직접 수정해야 하므로 OCP를 위반한다. ​ ​ ​ 문제를 해결하는 방법이다. 인터페이스에만 의존하는 방법으로 생성자를 통해 구현 객체를 주입(D..
객체 지향 설계의 5가지 원칙(SOLID)
·
Spring Framework
SOLID 원칙이란? -> 객체 지향 설계에서 지켜야 할 5개의 소프트웨어 개발 원칙이다. ​ SRP(Single Responsibility Principle): 단일 책임 원칙 OCP(Open Closed Priciple): 개방 폐쇄 원칙 LSP(Listov Substitution Priciple): 리스코프 치환 원칙 ISP(Interface Segregation Principle): 인터페이스 분리 원칙 DIP(Dependency Inversion Principle): 의존 역전 원칙 ​ 좋은 소프트웨어란 변화에 대응을 잘 하는것을 말한다. SOLID 객체 지향 원칙을 적용하면 코드를 확장하고 유지, 보수, 관리 하기가 더 쉬워지며, 불필요한 복잡성을 제거해 리팩토링에 소요되는 시간을 줄임으로써 ..
[Java] 백준 1049 (좋은 구간)
·
BOJ, Programmers
https://www.acmicpc.net/problem/1059 1059번: 좋은 구간 [9, 10], [9, 11], [9, 12], [10, 11], [10, 12] www.acmicpc.net 구간을 찾는 문제이다. 정수 집합 S가 있고, 주어진 숫자가 포함된 구간을 좋은 구간이라고 한다. A n) { if(numbers[i] < end) end = numbers[i]; }else if(numbers[i] < n) { if(start < numbers[i]) start = numbers[i]; } else if(numbers[i] == n){ // 만약 갖고 있다면 break; System.out.println("0"); System.exit(0); } } 아래는 전체 코드이다. import ja..
Test
·
BOJ, Programmers
import java.util.Arrays; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int m = scanner.nextInt(); int n = scanner.nextInt(); int pkgPri [] = new int [n]; int onePri [] = new int [n]; int min; for (int i = 0; i < n; i++) { pkgPri[i] = scanner.nextInt(); onePri[i] = scanner.nextInt(); } Arrays.sort(pkgPri); Arrays.s..