자바

옵저버 패턴(Observer Pattern)변화가 일어 났을 때, 미리 등록된 다른 클래스에 통보해주는 패턴을 구현하는 것입니다.일대다(one-to-many) 의존성을 가지며, 분산 이벤트 핸들링 시스템을 구현하는 데 사용됩니다.ex) event listener 옵저버 패턴 흐름1. 일 대 다 관계로 구성2. 관찰 대상의 상태가 변경되면 옵저버 한테 통보3. 통보 받은 값을 바꿀 수 있고, 삭제 하는 등의 적절한 대응을 합니다.4. 일 대 다 관계의 그룹에서 추가/삭제 될 수 있으며 그로 인하여 정보를 전달 받거나 받을 수 없게 합니다.옵저버 패턴 특징1. 대상 객체의 상태가 변경될 때마다 다른 객체의 동작을 트리거해야 할때2. 앱이 한정된 시간, 특정한 케이스에만 다른 객체를 관찰해야 할 때3. 한 객..
· OOP/Java
1. 오버로딩 시 생성자 에러(Constructor Class is already defined in Class) 'Child(String)' is already defined in 'com.java.javacode.overloding.Child' ‘Class(Type)’ is already defined in ‘package.class’ 생성자를 오버로딩(Overloading) 시 매개변수를 받는 자료형이 종류와 갯수가 동일할 경우 에러가 발생합니다. 이유는, 해당 type을 가진 생성자가 이미 선언되었기 때문입니다. 생성자가 다르게 보일지라도 컴퓨터의 입장에서는 클래스 객체 생성 시 어떤 생성자를 가지고 생성해야하는지 판단하지 못하기 때문입니다. Parent public class Parent { p..
· OOP/Java
1. Throwable 클래스 Java의 모든 예외는 java.lang.Throwable 클래스를 상속합니다. Throwable은 예외처리를 하기 위한 최상위 클래스입니다. 직접 사용되지 않고 상속받은 자식 클래스들이 예외처리에 사용됩니다. 2. RuntimeException과 IOException의 차이 : 예외 상황을 처리하는데 강제성을 가지고 있는가 없는가 하는 것 RumtimeException의 경우 : 프로그램 실행 도중 발생하는 예외로 프로그래머의 잘못이 발생했다는 것 Ex) IndexOutOfBoundsException, NullPointerException, Type... 예외 처리하는데 강제성을 가지고 있지 않다. IOException의 경우 : 런타임 예외는 언제 에러가 발생하는지 알 ..
문제 https://leetcode.com/problems/maximum-number-of-vowels-in-a-substring-of-given-length/description/?envType=study-plan-v2&envId=leetcode-75 문자열 s과 정수가 주어 지면 길이가 있는 하위 문자열에서 모음 문자의 최대 개수를k 반환합니다 .sk 영어의 모음 글자'a' 는 , 'e', 'i', 'o', 입니다 'u'. 예시 1: 입력: s = "abciiidef", k = 3 출력: 3 설명: 하위 문자열 "iii"에는 3개의 모음 문자가 포함되어 있습니다. 예 2: 입력: s = "aeiou", k = 2 출력: 2 설명: 길이가 2인 하위 문자열에는 모음 2개가 포함됩니다. 예시 3: 입력:..
문제 https://leetcode.com/problems/house-robber/?envType=study-plan-v2&envId=leetcode-75 당신은 거리의 집을 털려는 전문 강도입니다. 각 집에는 일정 금액의 돈이 숨겨져 있습니다. 각각의 집에서 물건을 강탈하는 것을 막는 유일한 제약은 인접한 집에 보안 시스템이 연결되어 있고 같은 밤에 인접한 두 집에 침입한 경우 자동으로 경찰에 연락한다는 것입니다 . nums각 집의 금액을 나타내는 정수 배열이 주어지면 오늘 밤 경찰에 신고하지 않고 훔칠 수 있는 최대 금액을 반환하세요 . 예시 1: 입력: nums = [1,2,3,1] 출력: 4 설명: 1번 집(돈 = 1)을 털고 3번 집(돈 = 3)을 털었습니다. 도둑질할 수 있는 총 금액 = 1 ..
문제 https://leetcode.com/problems/min-cost-climbing-stairs/?envType=study-plan-v2&envId=leetcode-75 코드 class Solution { public int minCostClimbingStairs(int[] cost) { // i가 2부터인 이유는 제약조건 for(int i = 2; i < cost.length; i++){ // 두칸 아래와 한칸 아래 계단 중 더 값이 작은 계단을 밟으면 된다. // 그리고 밟은 계단의 비용을 더해준다. cost[i] = cost[i] + Math.min(cost[i-2], cost[i-1]); } // 배열 길이의 + 1 의 위치가 꼭대기라고 하면 꼭대기에서 한칸 아래와 두칸 아래 중 작은 값이..
문제 https://leetcode.com/problems/reverse-vowels-of-a-string/?envType=study-plan-v2&envId=leetcode-75 코드 class Solution { private Boolean isVowel(char c){ return c=='a' || c=='e' || c=='i' || c=='o' || c=='u' || c=='A' || c=='E' || c=='I' || c=='O' || c=='U'; } public String reverseVowels(String s) { // 스택 형식으로 모음을 담으면 뒤집어서 반환가능 Stack vowels = new Stack(); // 반환 문자열 생성시 필요한 StringBuilder객체 String..
문제 고객의 약관 동의를 얻어서 수집된 1~n번으로 분류되는 개인정보 n개가 있습니다. 약관 종류는 여러 가지 있으며 각 약관마다 개인정보 보관 유효기간이 정해져 있습니다. 당신은 각 개인정보가 어떤 약관으로 수집됐는지 알고 있습니다. 수집된 개인정보는 유효기간 전까지만 보관 가능하며, 유효기간이 지났다면 반드시 파기해야 합니다. 예를 들어, A라는 약관의 유효기간이 12 달이고, 2021년 1월 5일에 수집된 개인정보가 A약관으로 수집되었다면 해당 개인정보는 2022년 1월 4일까지 보관 가능하며 2022년 1월 5일부터 파기해야 할 개인정보입니다. 당신은 오늘 날짜로 파기해야 할 개인정보 번호들을 구하려 합니다. 모든 달은 28일까지 있다고 가정합니다. 다음은 오늘 날짜가 2022.05.19일 때의 ..
defxyj
'자바' 태그의 글 목록