JAVA
-
[Java] 동적 계획법 (DP: Dynamic programmig) 이해하기 <적용문제>JAVA 2024. 4. 3. 14:06
1. 동적 계획법이란? 동적 계획법(Dynamic programming)은 중복 계산을 줄이기 위해 작은 문제들을 풀면서 그 결과를 저장해 나아가면서 전체 문제를 해결하는 알고리즘을 말한다. 해당 알고리즘의 특징은 메모이제이션(Memoization) 기법을 사용하여 중복 계산을 피하고, 경우의 수가 많은 경우에도 효율적으로 계산할 수 있다. 일반적으로 재귀적으로 구현된다. 메모이제이션(Memoization) 이란? 이전에 계산한 값을 저장하여 다시 계산하지 않도록 하여 속도를 빠르게 하는 방법이다. 동적 계획법 알고리즘을 구현할때 다음과 같은 단계를 따른다. 1. 문제를 하위 문제로 쪼갠다. 2. 하위 문제를 재귀적으로 해결한다. 3. 결과를 저장한다. (메모이제이션) 4. 저장된 결과를 이용하여 큰 문..
-
[Java] String, StringBuffer, StringBuilder 차이점JAVA 2024. 3. 25. 14:04
1. String String 객체는 한번 할당된 공간이 변하지 않는다고 해서 'immutable(불변)'자료형 이라고 불린다. 또한 String 객체는 + 연산자 또는 concat 메서드를 통해 기존에 생성된 String 객체에 문자열을 붙이는게 아니라 기존 문자열을 삭제한 후 새 String 객체에 연결된 문자열을 저장하고 그 객체를 참조하는 것이다. - String 클래스 객체는 Heap 메모리 영역(가비지 컬렉션이 동작하는 영역)에 생성. 한번 생성된 객체의 내부 내용을 변화시킬 수 없다. 기존 객체가 제거되면 Java 의 가지비 컬렉션이 회수한다. Immutable 한 객체는 간단하게 사용가능하고, 동기화에 대해 신경쓰지 않아도 되기 때문에(Thread - safe), 내부 데이터를 자유롭게 공..
-
[Java] nextInt() 사용 후 nextLine() 사용시 문제점 해결JAVA 2024. 3. 22. 20:29
Scanner.nextInt() 메서드는 사용자가 입력한 가장 마지막 개행문자(공백) 전까지만 입력받는다. nextInt() 로 숫자 100를 입력했다고 가정하면 입력: 100엔터( 공백 ) 에서 개행전까지만 입력받는 것이다. 마지막에 개행문자를 제거하지 않았기 때문에 입력된 개행문자는 버퍼에 남아 있다. 이어서 nextLIne() 메서드를 사용하게 되면 개행문자를 nextLIne() 에서 입력처리로 받기 때문에 문제가 발생한다. 해결방법1 sc.nextLine() 메서드를 사용해 개행문자를 제거해 준다. 해결방법2 nextLine() 으로 입력받은 후 Integer.parseInt() 로 변화해 준다.
-
[Java] 자바 ArrayList 사용 방법 <적용문제>JAVA 2024. 3. 15. 21:30
ArrayList란? ArrayList는 배열을 기반으로 한 컬렉션의 하나이며, 데이터를 추가 삭제시 내부에서 동적으로 배열의 길이를 조절해 줍니다. ArrayList를 생성하게 되면 내부에서는 데이터를 저장하기 위한 배열(용량)을 저장하기 위한 저장공간이 할당되며, 사용중 데이터의 크기가 이 Capacity의 크기를 넘어서게 되면 저장공간이 새롭게 할당됩니다. ArrayList vs 배열 배열의 길이는 고정된 반면 ArrayList는 배열의 길이를 자동으로 조절해주는 기능을 가지고 있어 가변적입니다. 1. ArrayList생성 자바에서 ArrayList를 사용하려면 아래 구문을 추가해야 합니다. import java.util.ArrayList; ArrayList생성 방법은 다음과 같습니다. 2. Arr..
-
[Java] 참조 타입과 참조 변수JAVA 2024. 2. 1. 16:53
자바의 타입은 크게 기본 타입과 참고 타입으로 분류된다.기본 타입은 정수 타입(byte, char, short, int, long), 실수 타입(float, double), 논리 타입(boolean)을 말하고참고 타입으론 배열 타입, 열거 타입, 클래스, 인터페이스를 말한다. 기본 타입과 참조 타입의 가장 큰 차이점은저장되는 값이다. 기본 타입은 데이터의 값을 저장하는 반면 참조 타입은 메모리의 번지를 변수 안에 저장한다. 결과: true우리가 기본적으로 알고 있는 if문 int num1= 10, int num2 = 10일때 if(num1 == num2)은 변수안에 있는데이터 값을 비교하므로 true를 반환하다.문자열 또한 리터럴(입력 값)이 동일하면 String 객체를 공유하도록 되어 있다.따라서..