
Iterator 클래스를 작성할 때, Object타입 대신 T와 같은 타입 변수를 사용 더보기 Iterator 예제12-2 코드 더보기 코드 package ch12; import java.util.*; class Ex12_2 { public static void main(String[] args) { ArrayList list = new ArrayList(); list.add(new Student("자바왕", 1, 1)); list.add(new Student("자바짱", 1, 2)); list.add(new Student("홍길동", 2, 1)); Iterator it = list.iterator(); // Iterator it = list.iterator(); while (it.hasNext()) {..

지네릭스 용어 Box 지네릭 클래스. 'T의 Box' 또는 'T Box'라고 읽는다. T 타입 변수 또는 타입 매개변수.(T는 타입 문자) Box 일반 클래스. 원시 타입(raw type) 더보기 지네릭 클래스 선언 객체 생성 참조변수와 생성자의 타입 변수 T에 String 타입을 대입한 것이다. 이러한 타입 Box을 '대입된 타입'이라 한다. 객체 생성할 때마다 다른 타입을 대입할 수 있다. 예를 들어, new Box();처럼 말이다. 지네릭 타입과 다형성 참조변수와 생성자의 대입된 타입은 일치해야 한다. 지네릭 클래스간의 다형성은 성립.(여전히 대입된 타입은 일치해야) 매개변수의 다형성도 성립. 더보기 참조변수와 생성자의 대입된 타입은 일치해야 한다. ArrayList list = new ArrayL..

지네릭스(Generics) 컴파일 시 타입을 체크해주는 기능(compile-time type check) - JDK1.5 객체의 타입 안정성을 높이고 형변환의 번거로움을 줄여줌 더보기 컴파일 시 타입을 체크해주는 기능(compile-time type check) - JDK1.5 그동안에도 컴파일 시 타입 체크가 가능하긴 했지만 '한계'가 분명히 있었다. 그 한계를 넘어서게 해주는 것이 '지네릭스'이다. 객체의 타입 안정성을 높이고 형변환의 번거로움을 줄여줌 타입의 안정성 ↑ 형변환의 번거로움 ↓ - 코드 간결 형변환의 번거로움을 줄여준다는 건, 원래는 꺼낼 때 get(0)가 Object 타입을 반환하기 때문에 (Tv) 타입으로 형변환을 해주어야 한다. 그런데 지네릭스를 사용해서 ArrayList클래스에 ..

문제 풀러가기✍🏻 서론 난이도가 갑자기 올라가서 하루종일 못 풀다가 결국 12시 넘어서 통과를 겨우 할 수 있었다. 개근상은 이번달도 틀린 것 같습니다. 문제 셀프 넘버는 1949년 인도 수학자 D.R. Kaprekar가 이름 붙였다. 양의 정수 n에 대해서 d(n)을 n과 n의 각 자리수를 더하는 함수라고 정의하자. 예를 들어, d(75) = 75+7+5 = 87이다. 양의 정수 n이 주어졌을 때, 이 수를 시작해서 n, d(n), d(d(n)), d(d(d(n))), ...과 같은 무한 수열을 만들 수 있다. 예를 들어, 33으로 시작한다면 다음 수는 33 + 3 + 3 = 39이고, 그 다음 수는 39 + 3 + 9 = 51, 다음 수는 51 + 5 + 1 = 57이다. 이런식으로 다음과 같은 수열..

Collections - 컬렉션을 위한 메서드(static)를 제공 컬렉션 채우기, 복사, 정렬, 검색 - fill(), copy(), sort(), binarySearch() 등 컬렉션의 동기화 -synchronizedXXX() 변경불가(readOnly) 컬렉션 만들기 - unmodifiableXXX() 싱글톤 컬렉션 만들기 - singletonXXX() 한 종류의 객체만 저장하는 컬렉션 만들기 - checkedXXX() 더보기 1. 컬렉션 채우기, 복사, 정렬, 검색 - fill(), copy(), sort(), binarySearch() 등 2. 컬렉션의 동기화 -synchronizedXXX() 배열기반 클래스 중 Vector클래스는 동기화를 하는 반면, 새로운 버전인 ArrayList클래스는 ..

문제 풀러가기✍🏻 서론 하도 통과가 안 되가지고 뭐가 문제지 엄청 고민했는데, 출력 방법을 몰랐어서 계속 틀린 것이었다. 예전에 정보처리기사 실기 준비할 때, C알고리즘 문제에서 printf로 문자열 형식을 정하여 출력하는 방법을 배웠었다. JAVA에서도 그 방법을 사용할 수 있다. 그것을 알아야 한다. | 출처 | 나를위한노트 | 출처 | hello jiniworld 문제 대학생 새내기들의 90%는 자신이 반에서 평균은 넘는다고 생각한다. 당신은 그들에게 슬픈 진실을 알려줘야 한다. 입력 첫째 줄에는 테스트 케이스의 개수 C가 주어진다. 둘째 줄부터 각 테스트 케이스마다 학생의 수 N(1 ≤ N ≤ 1000, N은 정수)이 첫 수로 주어지고, 이어서 N명의 점수가 주어진다. 점수는 0보다 크거나 같고,..

HashMap - 순서X, 중복(키X, 값O) Map인터페이스를 구현. 데이터를 키와 값 쌍으로 저장 HashMap(동기화X)은 HashTable(동기화O)의 신버젼 더보기 Map인터페이스를 구현. 데이터를 키와 값 쌍으로 저장 HashMap(동기화X)은 HashTable(동기화O)의 신버젼 HashMap과 TreeMap만 알고 있으면 된다. TreeMap은 TreeSet과 같은 특성을 갖는다. 이진 탐색 트리로 구현한 것이다. 키와 값의 쌍으로 저장한다는 특성을 제외하면 둘은 같다고 보면 된다. HashMap Map인터페이스를 구현한 대표적인 컬렉션 클래스 순서를 유지하려면, LinkedHashMap클래스를 사용하면 된다. TreeMap 범위 검색과 정렬에 유리한 컬렉션 클래스 HashMap보다 데이터..

문제 풀러가기✍🏻 서론 문제를 고민고민하다가 시간이 없어서 다른 분의 풀이를 블로그에서 참고했다. | 출처 | 성장하는 코더의 스토리 문제 "OOXXOXXOOO"와 같은 OX퀴즈의 결과가 있다. O는 문제를 맞은 것이고, X는 문제를 틀린 것이다. 문제를 맞은 경우 그 문제의 점수는 그 문제까지 연속된 O의 개수가 된다. 예를 들어, 10번 문제의 점수는 3이 된다. "OOXXOXXOOO"의 점수는 1+2+0+0+1+0+0+1+2+3 = 10점이다. OX퀴즈의 결과가 주어졌을 때, 점수를 구하는 프로그램을 작성하시오. 시행착오(Trial&Error) 풀이(Solution) 기본 점수와 더해줄 점수를 변수로 선언하고, 연속 정답일 때의 점수를 어떻게 분기하여 반영해줄 지 고민하고 작성해야 한다.문자열로 입..

용어 정리 이진 트리 모든 노드가 최대 2개의 하위 노드를 갖음 이진 탐색 트리 부모보다 작은 값은 왼쪽. 큰 값은 오른쪽에 저장(이진 트리 중 한 종류) TreeSet 이진 탐색 트리(binary search tree)로 구현 TreeSet - 범위 탐색, 정렬 이진 탐색 트리(binary search tree)로 구현. 범위 탐색과 정렬에 유리 이진 트리는 모든 노드가 최대 2개의 하위 노드를 갖음 각 요소(node)가 나무(tree)형태로 연결(LinkedList의 변형) 더보기 이진 트리는 모든 노드가 최대 2개의 하위 노드를 갖음 각 요소(node)가 나무(tree)형태로 연결(LinkedList의 변형) 이진 탐색 트리(binary search tree) 부모보다 작은 값은 왼쪽. 큰 값은 오..

HashSet - 순서X, 중복X Set인터페이스를 구현한 대표적인 컬렉션 클래스 순서를 유지하려면, LinkedHashSet클래스를 사용하면 된다. TreeSet 범위 검색과 정렬에 유리한 컬렉션 클래스 HashSet보다 데이터 구차, 삭제에 시간이 더 걸림 HashSet의 주요 메서드 더보기 생성자 추가, 삭제 검색 기타 예제 11-9 코드 더보기 저장 순서를 유지하지 않기 때문에 어느 것이 "1"이고 어느 것이 Integer(1)인지 알 수 없다. import java.util.*; public class Ex11_9 { public static void main(String[] args) { Object[] objArr = {"1",new Integer(1),"2","2","3","3","4","..

문제 풀러가기✍🏻 서론 계산실수를 많이 했다. 문제 첫째 줄에 새로운 평균을 출력한다. 실제 정답과 출력값의 절대오차 또는 상대오차가 10-2 이하이면 정답이다. 시행착오(Trial&Error) 풀이(Solution) int형 대신 float형으로 평균을 출력하라는 뜻으로 해석했다. 코드 import java.io.*; import java.util.StringTokenizer; class Main { public static void main(String[] args) { try { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(new OutputS..

Comparator와 Comparable 객체 정렬에 필요한 메서드(정렬기준 제공)를 정의한 인터페이스 compare()와 compareTo()는 두 객체의 비교 결과를 반환하도록 작성 더보기 Comparator와 Comparable Comparable : 기본 정렬기준을 구현하는데 사용 Comparator : 기본 정렬기준 외에 다른 기준으로 정렬하고자할 때 사용 compare()와 compareTo()는 두 객체의 비교 결과를 반환하도록 작성 같으면 0, 오른쪽이 크면 음수(-), 작으면 양수(+) 예제 11-7 코드 더보기 Arrays.sort(strArr, String.CASE_INSENSITIVE_ORDER); // 대소문자 구분안함 정렬할 때는 1. 정렬 대상과 2. 정렬기준이 필요하다. '기..

Arrays - 배열을 다루기 편리한 static메서드 제공하는 클래스 배열의 출력 - toString() 배열의 복사 - copyOf(), copyOfRange() 배열 채우기 - fill(), setAll() 배열의 정렬과 검색 - sort(), binarySearch() 다차원 배열의 출력 - deepToString() 다차원 배열의 비교 - deepEquals() 배열을 List로 변환 - asList(Object... a) 더보기 Arrays - 배열을 다루기 편리한 static메서드 제공하는 클래스(Math, Object, Collections) util클래스 : static메서드 제공(Math, Object, Collections) 1. 배열의 출력 - toString() 2. 배열의 복사 ..

Iterator, ListIterator, Enumeration 컬렉션에 저장된 데이터를 접근하는데 사용되는 인터페이스(읽어오기) Enumeration은 Iterator의 구버젼(Iterator만 알면 된다) ListIterator는 Iterator의 접근성을 향상시킨 것(단방향 ➝ 양방향) 더보기 Iterator인터페이스의 메서드 Iterator 컬렉션에 저장된 요소들을 읽어오는 방법을 표준화한 것 컬렉션에 iterator()를 호출해서 Iterator를 구현한 객체를 얻어서 사용 더보기 컬렉션에 저장된 요소들을 읽어오는 방법을 표준화한 것 확인 - hasNext() 읽기 - next() '구조'(List, Set, Map)가 어떻게 되어있든간에, 있는지 '확인'(hasNext())하고 '읽기'(nex..

문제 풀러가기✍🏻 서론 '시간 초과' 때문에 여러 번 통과를 못 했던 문제, 단순 계산 실수 때문이었다. 시행착오(Trial&Error) 51251405, ... - 시간 초과 알고 보니, 계산 실수로 인한 '시간 초과'였다. 풀이(Solution) BufferedReader & BufferedWriter 사용했다. 일단 조건식에 부합하는지 관계 없이 반복문을 실행하고 조건에 따라 반복문을 실행하는 do_while문 사용했다. 문제 중 26부터 시작한다. 2+6 = 8이다. 새로운 수는 68이다. 6+8 = 14이다. 새로운 수는 84이다. 8+4 = 12이다. 새로운 수는 42이다. 4+2 = 6이다. 새로운 수는 26이다. 이 문장을 식으로 작성 할 수 있으면 문제를 풀 수 있다. 26을 2 + 6으..

스택 LIFO구조. 마지막에 저장된 것을 제일 먼저 꺼낸다. 스택 : 밑이 막힌 상자 'ArrayList' 배열이 적합 큐 FIFO구조. 제일 먼저 저장한 것을 제일 먼저 꺼낸다. 'LinkedList' 연결리스트가 적합 더보기 스택과 큐의 메서드 Stack클래스 Queue인터페이스 더보기 Stack클래스 Stack클래스가 있다. Stack st = new Stack(); 이렇게 객체 생성해서 사용하면 된다. Queue인터페이스 자바에서 Queue는 인터페이스다. Queue q = new Queue(); 이렇게 객체 생성하면 안 된다. 인터페이스를 구현한 클래스 찾기 Queue를 직접 구현 Queue를 구현한 클래스를 사용

배열의 장점 배열은 구조가 간단하고, 데이터를 읽는 데 걸리는 시간(접근시간, access time)이 짧다. 더보기 배열은 구조가 간단하고, 데이터를 읽는 데 걸리는 시간(접근시간, access time)이 짧다. arr[0]에서 arr[4]로 가는 데 걸리는 시간, 또는 arr[3]을 읽는데 걸리는 시간을 구하려면, 배열 요소의 주소를 알아야 한다. 특정 배열 요소의 주소는 배열 주소 + (배열 요소의 크기 x 인덱스) 배열의 단점 크기를 변경할 수 없다. 비순차적인 데이터의 추가 또는 삭제에 시간이 많이 걸린다. 더보기 1. (실행 중) 크기를 변경할 수 없다. 크기를 변경해야 하는 경우, 새로운 배열을 생성 후 데이터를 복사해야 함 크기 변경을 피하기 위해 충분히 큰 배열을 생성하면, 메모리가 낭..

ArrayList ArrayList는 기존의 Vector를 개선한 것으로 구현원리와 기능적으로 동일 ArrayList와 달리 Vector는 자체적으로 동기화처리가 되어 있다. List인터페이스를 구현하므로, 저장순서가 유지되고 중복을 허용한다. 데이터의 저장공간으로 배열을 사용한다.(배열 기반) 더보기 Object[ ] - 객체 배열. 다형성. 모든 종류의 객체 저장 가능 public class ArrayList extends AbstractList implemenets List, RandomAccess, Cloneable, java.io.Serializable { ... transient Object[] elementData; // Object배열 ... } ArrayList의 메서드 더보기 생성자 추..

컬렉션 프레임웍 공부 방법 1. 여러 번 반복(목차 적어보기) 2. 실습 중점(언제, 어떻게 쓰는지) 컬렉션(collection) 여러 객체(데이터)를 모아놓은 것을 의미 프레임웍(framework) 표준화, 정형화된 체계적인 프로그래밍 방식 더보기 라이브러리 : 다른 사람이 미리 만들어 놓은 기능(오디오 라이브러리, 통계 라이브러리, 그래픽 라이드러리 등등), Java API 제공 기능, 생산성 제고, 유지보수 용이, Spring framework 컬렉션 프레임웍(framework) 컬렉션을 다루기 위한 표준화된 프로그래밍 방식(여러 객체(= 多 데이터) 틀 작업) 컬렉션을 쉽고 편리하게 다룰 수 있는 다양한 클래스 제공(저장, 삭제, 검색, 정렬) java.util패키지에 포함. JDK1.2부터 제공..

문제 풀러가기✍🏻 서론 EOF가 무엇인지 공부한 후에, 문제 풀이를 시작했다. 문제 입력이 끝날 때까지 A+B를 출력하는 문제. EOF에 대해 알아 보세요. 더보기 EOF End of File의 약자. 데이터 소스로부터 더 이상 읽을 수 있는 데이터가 없음을 나타내는 용어 알고리즘 문제를 풀 때, 입력값을 얼마나 받을지 명시하지 않을 경우에 사용 입력처리를 Scanner로 할 경우와 BufferedReader로 할 경우 EOF 사용 방법이 다르다. Scanner hasNext메서드를 사용하여 EOF를 한다. Scanner sc = new Scanner(System.in); while(sc.hasNext()) { System.out.println(sc.nextInt()); } BufferedReader 특..