TIL
-
20240324 DFSTIL 2025. 3. 24. 00:25
동전교환 package org.example.infrenJavaCodingTest;import java.util.Arrays;import java.util.Collection;import java.util.Collections;import java.util.Scanner;public class chap9_5 { static int n , m , answer = Integer.MAX_VALUE; public void DFS(int L, int sum, Integer[] arr){ if(sum>m) return; if(L>=answer) return; if(sum==m){ answer = Math.min(answer, L); }..
-
0320 중복순열 구하기_DFSTIL 2025. 3. 20. 23:32
// 중복 순열 구하기 문제package org.example.infrenJavaCodingTest;import java.util.Scanner;public class chap9_4 { static int[] pm; static int n , m; public void DFS(int L){ if(L==m){ for(int x : pm) System.out.print(x+" "); System.out.println(); } else{ // n 만큼 for(int i=1; i 호출이 n 번 chap9_4 T = new chap9_4(); Scanner ..
-
20240225TIL 2025. 2. 25. 22:50
자바 코딩테스트package org.example.infrenJavaCodingTest;import java.util.ArrayList;import java.util.Scanner;public class chap2_4 {// public ArrayList solution(int n, String[] str){// ArrayList answer = new ArrayList();// for(String x : str){// String tmp = new StringBuilder(x).reverse().toString(); // 뒤집은 후 다시 String 화// answer.add(tmp);// }//// // S..
-
-
0726TIL 2024. 7. 27. 21:46
빅오 표기법정확한 표현을 하기 위한 것이 아니라 대략적인 추세를 보기 위한 것추세를 보기 위한 것이므로 상수는 추세에 영향을 제네릭와일드카드와일드 카드는 제네릭 타입이나 제네릭 메서드를 선언하는 것이 아니다. 와일드 카드는 이미 만들어진 제네릭 타입을 활용할 때 사용하는 것이다. 와일드 카드의 ?는 무엇이든 다 상속받을 수 있다는 의미. 상한선이 없다는 의미=> 를 의미한다. 제네릭 vs 와일드 카드 와일드카드의 한계와일드 카드는 일반 메소드다. 즉, 매개변수로 들어오는 값만 제한없이 받는 것이지. return 타입은 결정 동적으로 결정할 수 없다. 이 경우 반환된 타입을 캐스팅 해야하는 상황이 발생할 수 있다. 제네릭의 경우는 반환타입, 매개변수 타입, 인스턴스 변수 타입 등을 동적으로 선언할 수 있..
-
0725TIL 2024. 7. 26. 00:55
불변객체불변객체란? 한번 값이 정해지면 바꿀 수 없는 객체 왜 쓸까?자바의 참조 자료형은 기본적으로 공유자원이다. 이 말은 같은 객체를 여러 변수가 참조 할 수 있다는 것. 이는 개발자가 의도하지 않은 사이드 이팩트를 만들어 내기도 한다. 해결을 위해서는 변수에 값을 복사하지 말고, 새로운 객체를 계속 생성하는 방법이 있다. 불변객체 선언 방법final 키워드를 사용한다. 객체 내부 인스턴스 변수를 final 키워드로 선언하면, 상수가 되어 초기화 시 한번만 값이 변경 가능하고 그 이후에는 불가능하다. 즉, setter가 필요 없는 것이다.(어차피 못 바꾸므로..) 개발자가 불변객체에 setter를 이용하여 값 변경을 시도 할 때 인텔리제이와 같은 IDE 툴에서는 에러를 일으키고 이것을 보고 불변 객체임..
-
0724TIL 2024. 7. 24. 23:15
제네릭 메서드메서드를 호출하는 시점에 타입 인자를 전달해서 타입을 지정하는 것. 따라서 타입을 지정하면서 메서드를 호출 제네릭 타입은 static 메서드에서 사용 할 수 없다제네릭 타입은 객체 생성 시 그 타입이 결정된다. static 메소드는 함수 프로그램 시작 시 만들어 진다.(인스턴스 단위가 아니라 클래스 단위이다). 즉, 타입이 정해지기 전에 만들어져야 하므로 사용 할 수 없다. 해결 방법은?제네릭 메서드를 사용한다. 제네릭 타입과 제네릭 메서드의 우선순위-> 제네릭 메서드가 우선순위를 가짐 왜?제네릭 타입은 클래스 레벨에서 걸림제네릭 메서드는 메서드 단위제네릭 메서드가 타입 매개변수와 위치가 더 가까움 -> 우선순위를 가짐 SET정의 : 세트(셋)은 유일한 요소들의 컬렉션. 특징1) 유일성: 중..
-
0723TIL 2024. 7. 24. 00:12
제네릭이란제네릭이라는 단어는 일반적인, 범용적인이라는 영어 단어 뜻이다. 풀어보면 특정 타입에 속한 것이 아니라 일반적으로, 범용적으로 사용할 수 있다는 뜻이다. 제네릭 왜 씀?객체의 명만 다르고 내부 동작이 거의 비슷한 두개의 클래스가 있다고 생각해보자. 개와 고양이는 울음소리가 다를 뿐 운다, 달린다, 먹는다 등의 공통 기능을 가지고 있다. 클래스 마다 메소드를 정의하면 중복되는 코드가 많이 발생하여 비효율 적일 것이다.이를 해결하기 위해 다형성을 활용해보자개와 고양이의 부모인 동물 클래스를 만들고 이를 상속받도록 하자. 이제 부모 클래스에 공통 메소드를 정의하면 코드의 중복은 해결되지만 안정성의 문제가 발생한다. 이를 모두 해결하기 위해 등장한 것이 제네릭이다. 매개변수와 인자매개변수는 메소드 뒤에..