이 문제는 replace를 사용하면 메모리가 초과 된다. 따라서 stack을 이용하여 풀어야 정답이 나오게 된다. 또한 scanner를 통해 입력받고 출력 시킨 결과 시간 초과가 나왔고 따라서 bufferreader를 사용하게 되었다. 알고리즘은 입력받은 문자열을 스택에다 넣어주면서 삭제할 문자열과 스택 사이즈가 같아질때 부터 스택을 검사하기 시작하고 카운트를 통해 검사하여 삭제할 문자열과 카운트의 수가 동일 할시에 삭제할 문자열의 길이만큼 스택에서 삭제시키고 다음 문자열을 받는 알고리즘 이다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Stack; p..
전체 글
1. * 로 4줄 만들기 for(int i=0; i

스택 영역(stack) 자바에서 프로그램에서 함수(메서드)가 호출되면 메서드에 필요한 지역변수와 매개변수를 스택영역에 저장한다. 이렇게 스택 영역은 함수의 호출과 함께 할당되며, 함수의 호출이 완료되면 소멸한다. 스택영역에 저장되는 함수의 호출 정보를 스택 프레임이라 칭하며, 정적 메모리 할당으로 컴파일 타임에 크기가 결정된다. 후입선출(LIFO, Last-In First-Out) 방식을 사용하고, 메모리의 높은 주소에서 낮은 주소의 방향으로 할당한다. 힙 영역(heap) 힙 영역은 모든 인스턴스 변수가 저장되는 영역이다. 힙영역은 사용자가 직접 관리할 수 있는 영역으로 사용자에 의해 메모리 공간이 동적으로 할당되고 해제됨으로 런타임에 크기가 결정된다. 힙영역은 메모리의 낮은 주소에서 높은 주소방..
오버 로딩 (overloading) 동일한 함수명으로 다른 서비스를 받을 수 있는 것이다. - 동일한 함수명으로 여러 개의 함수를 제공한다. - 매개변수의 타입이 다르면 오버 로딩 - 매개변수의 개수가 다르면 오버 로딩 - 편하려고 사용한다. ( 다형성 ) - 같은 목적으로 사용하는 것 끼리만 만드는 것이 좋다. - 같은 클래스 내에서 사용한다. 1. void print(int num) // 전달받은 정수를 출력하는 메서드 2. void print(String str) // 전달받은 문자열을 출력하는 메서드 위와 같이 메서드를 오버로딩 하고 1. print(1); // 1이 출력됨 2. print("hello"); // hello가 출력됨 위와 같이 호출을 하면 매개변수에 따라 서로 다른 함수를 호출한다..
클래스는 객체를 생성하기 위한 설계도이다. 클래스의 구성요소 1. field ( 필드 ) - 외부에서 객체를 사용할 때 지속적으로 사용되어야 하는 데이터. - 접근지정자는 주로 private로 지정한다, - 필드 사용은 항상 메서드를 통해서 사용하는 게 좋다. ( getter, setter ) 2. constructor ( 생성자 ) - 객체 생성시 자동호출된다. ( 이때 딱 한 번만 호출되고 이후로는 호출 불가 ) - 디폴트 생성자 : 생성자를 명시적으로 만들지 않을경우 자동으로 제공해 준다. - 생성자가 호출되지 않으면 객체를 생성할 수 없다. - 오버로딩이 가능하다. ( 객체를 다양하게 만들 수 있다. ) - 리턴 타입이 없다. - 생성자명은 클래스 명과 동일하게 만들어야 한다. - 기능 : 객체 ..
변수란? 상수를 저장하는 메모리 공간이다. ( 변하는 수 ) 변수 이름 생성 규칙 1. 변수의 이름은 영문자(대소문자), 숫자, 언더스코어(_), 달러($)로만 구성할 수 있습니다. 2. 변수의 이름은 숫자로 시작할 수 없습니다. 3. 변수의 이름 사이에는 공백을 포함할 수 없습니다. 4. 변수의 이름으로 자바에서 미리 정의된 키워드(keyword)는 사용할 수 없습니다. 기본 타입 (primitive type) java 에서는 여러 형태의 타입을 미리 정의하고 제공하고 있다. 이를 기본 타입이라고 칭한다. 기본 타입은 8종류인 har, byte , short, int, long, float, double, boolean이 있다. java 에서 char는 C언어나 C++과 다르게 유니코드를 사용하여 2바..