분류 전체보기 512

[백준] 2644번 > 촌수계산

www.acmicpc.net/problem/2644 2644번: 촌수계산 사람들은 1, 2, 3, …, n (1≤n≤100)의 연속된 번호로 각각 표시된다. 입력 파일의 첫째 줄에는 전체 사람의 수 n이 주어지고, 둘째 줄에는 촌수를 계산해야 하는 서로 다른 두 사람의 번호가 주어진 www.acmicpc.net 문제 우리 나라는 가족 혹은 친척들 사이의 관계를 촌수라는 단위로 표현하는 독특한 문화를 가지고 있다. 이러한 촌수는 다음과 같은 방식으로 계산된다. 기본적으로 부모와 자식 사이를 1촌으로 정의하고 이로부터 사람들 간의 촌수를 계산한다. 예를 들면 나와 아버지, 아버지와 할아버지는 각각 1촌으로 나와 할아버지는 2촌이 되고, 아버지 형제들과 할아버지는 1촌, 나와 아버지 형제들과는 3촌이 된다. ..

관심사의 분리

현재 작성된 코드는 주문서비스 구현체(OrderServiceImpl)가 할인 정책 구현체를 선택하고 있는 상태이다. (FixDiscountPolicy / RateDiscountPolicy) 이를 공연에 대입해보자. 공연은 각 배역이 있고 그에 맞는 배우가 있다. 이를 매칭시켜보면 공연 = 애플리케이션(비지니스 로직 전체) 배역 = 인터페이스 (OrderService, DiscountPolicy) 배우 = 구현체 (OrderService, FixDiscountPolicy / RateDiscountPolicy) 배우가 상대 배역의 배우를 선택하고 있는 것과 똑같은 상황이라 할 수 있다. 즉, 배우가 공연도 해야하고 상대 배역까지 정해야하는 다양한 책임을 가지고 있음. 즉, 우리에게는 공연 기획자같은 역할에 ..

Spring/Spring Core 2021.03.04

정률 할인 정책 적용 / 문제점

1. 할인 정책 변경 👇 👇 😡😡문제점😡😡 역할과 구현을 충실히 분리했음. 다형성도 활용, 인터페이스와 구현 객체를 분리했음. BUT # DIP 클래스 의존관계를 보면 OrderServiceImpl은 추상(인터페이스)뿐만 아니라 구체(구현)클래스에도 의존하고 있다. 추상 : DiscountPolicy 구체 : FixDiscountPolicy / RateDiscountPolicy 우리가 설계한 의존 관계 실제 의존 관계 클라이언트인 OrderServiceImpl이 인터페이스와 구현체를 함께 의존하고 있다. DIP 위반❌❌❌ # OCP 기능을 확장하여 변경하려고하면, 클라이언트 코드에 영향을 준다. (FixDiscountPolicy를 RateDiscountPolicy로 수정) 할인 정책을 정액할인에서 정률할..

Spring/Spring Core 2021.03.04

새로운 할인 정책

🦹‍♂️요구사항🦹‍♂️ 기존 할인 정책 = 정액 할인 정책(고정 금액) : VIP 무조건 1000원 할인 정률 할인 정책(% 할인)으로 변경하고 싶음 10%할인 10000원 주문시 1000원 할인, 20000원 주문시 2000원 할인 1. 새로운 정책 구현하기 2. 새로운 정책 테스트 새로운 회원객체를 생성하여 할인금액을 return 받아 discount에 저장 Assertions를 사용하여 1000원인지 검증 @DisplayName은 Junit5부터 지원하는 애노테이션으로 테스트 명을 지정해줄 수 있다. 테스트 성공!(오타가 있네..디X 되O) 👯‍♂️테스트를 만들 때에는 성공 테스트 뿐아니라 실패 테스트도 꼭 만들어봐야한다.👯‍♂️ Expected (기대값) = 1000원 Actual (실제값) = ..

Spring/Spring Core 2021.03.04

애자일 방법론

애자일 방법론이란 무엇일까? 애자일 선언문을 참고하자면, 애자일 소프트웨어 개발 선언 우리는 소프트웨어를 개발하고, 또 다른 사람의 개발을 도와주면서 소프트웨어 개발의 더 나은 방법들을 찾아가고 있다. 이 작업을 통해 우리는 다음을 가치 있게 여기게 되었다: 공정과 도구보다 개인과 상호작용을 포괄적인 문서보다 작동하는 소프트웨어를 계약 협상보다 고객과의 협력을 계획을 따르기보다 변화에 대응하기를 가치 있게 여긴다. 이 말은, 왼쪽에 있는 것들도 가치가 있지만, 우리는 오른쪽에 있는 것들에 더 높은 가치를 둔다는 것이다. agilemanifesto.org/iso/ko/manifesto.html 애자일 소프트웨어 개발 선언 애자일 소프트웨어 개발 선언 우리는 소프트웨어를 개발하고, 또 다른 사람의 개발을 도..

잡담 2021.03.04

주문과 할인 도메인 실행 / 테스트

1. java main메소드로 실행 / 테스트 memberService를 통해 새로운 회원을 가입시킴 orderService를 통해 새로운 주문을 생성하여 order에게 넘겨준다. 주문서비스 구현체에서 멤버 등급을 확인해 할인 금액까지 알려줌 테스트 성공! 2. Junit으로 테스트 멤버 서비스를 통해 새로운 회원을 join시킴 주문 서비스를 통해 새로운 주문 생성 Assertions의 assertThat메소드를 사용하여 할인 가격이 1000원이 맞는지 검증 새로 join된 회원의 등급이 vip이므로 할인가격은 1000원이어야함. 테스트 성공! 3. 전체 테스트 성공!

Spring/Spring Core 2021.03.04

Long 과 long 무엇이 다를까❓❓❓

Java 에서 long 은 primitive type 원시형 데이터로 클래스가 아니다. long 은 64bit 정수값을 표현하는 데이터 타입으로 8byte 의 메모리 공간을 사용한다. Long 은 Wrapper 클래스로 long 과 마찬가지로 64bit 정수 값을 표현하지만 이것은 클래스다. 어떤 차이점이 존재할까? Long에는 null값이 들어갈 수 있지만 long에는 null이 들어갈 수 없다. 만약 null값이 생성될 수 있는 case가 있다면 Long을 사용하는 것이 바람직하다. 당연하겠지만, Long에 null값이 들어가있는 상태에서 long으로 형변환을 하려고 하면 오류가 발생. Long은 long에 비해 메모리 사용량이 많기 때문에 상황에 맞게 적절히 사용하는 것이 좋다. 👨‍💻👨‍💻 if,..

Java/Java 공부 2021.03.04

[백준] 15663번 > N과 M (9)

www.acmicpc.net/problem/15663 15663번: N과 M (9) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 문제 N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. N개의 자연수 중에서 M개를 고른 수열 입력 첫째 줄에 N과 M이 주어진다. (1 ≤ M ≤ N ≤ 8) 둘째 줄에 N개의 수가 주어진다. 입력으로 주어지는 수는 10,000보다 작거나 같은 자연수이다. 출력 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러..

[백준] 15664번 > N과 M (10)

www.acmicpc.net/problem/15664 15664번: N과 M (10) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 문제 N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. N개의 자연수 중에서 M개를 고른 수열 고른 수열은 비내림차순이어야 한다. 길이가 K인 수열 A가 A1 ≤ A2 ≤ ... ≤ AK-1 ≤ AK를 만족하면, 비내림차순이라고 한다. 입력 첫째 줄에 N과 M이 주어진다. (1 ≤ M ≤ N ≤ 8) 둘째 줄에 N개의 수가 주어진다. 입력..

[백준] 14425번 > 문자열 집합

www.acmicpc.net/problem/14425 14425번: 문자열 집합 첫째 줄에 문자열의 개수 N과 M (1 ≤ N ≤ 10,000, 1 ≤ M ≤ 10,000)이 주어진다. 다음 N개의 줄에는 집합 S에 포함되어 있는 문자열들이 주어진다. 다음 M개의 줄에는 검사해야 하는 문자열들이 주어 www.acmicpc.net 문제 총 N개의 문자열로 이루어진 집합 S가 주어진다. 입력으로 주어지는 M개의 문자열 중에서 집합 S에 포함되어 있는 것이 총 몇 개인지 구하는 프로그램을 작성하시오. 입력 첫째 줄에 문자열의 개수 N과 M (1 ≤ N ≤ 10,000, 1 ≤ M ≤ 10,000)이 주어진다. 다음 N개의 줄에는 집합 S에 포함되어 있는 문자열들이 주어진다. 다음 M개의 줄에는 검사해야 하는 ..

반응형