분류 전체보기
-
[Java 자바] 11. 기본 API 클래스 ⑦ Arrays 클래스Programming/Java 2022. 9. 4. 22:08
11-8. Arrays 클래스 리턴 타입 메소드 이름 설명 int binarySearch(배열, 찾는값) 전체 배열 항목에서 찾는 값이 있는 인덱스 리턴 타겟 배열 copyOf(원본배열, 복사할길이) 원본 배열의 0번 인덱스에서 복사할 길이만큼 복사할 배열 리턴 복사할 길이는 원본 배열의 길이보다 커도 되며, 타겟 배열의 길이가 됨 타겟 배열 copyOfRange(원본배열, 시작인덱스, 끝인덱스) 원본 배열의 시작 인덱스에서 끝 인덱스 전까지 복사한 배열 리턴 boolean deepEquals(배열, 배열) 두 배열의 깊은 비교(중첩 배열의 항목까지 비교) boolean equals(배열, 배열) 두 배열의 얕은 비교(중첩 배열 항목은 비교하지 않음) void fill(배열, 값) 전체 배열 항목에 동일..
-
[Java 자바] 11. 기본 API 클래스 ⑥ StringBuffer, StringBuilder 클래스Programming/Java 2022. 9. 4. 21:41
11-7. StringBuffer, StringBuilder 클래스 - 문자열을 저장하는 String 내부의 문자열을 수정할 수 없음 - replace()메소드나 +연산의 경우, 기존 String객체를 수정하는 것이 아닌 새로운 String 객체를 생성하여 그를 참조하게 함 - 문자를 결합하는 + 연산자를 많이 사용할 수록 String 객체의 수가 늘어나고 프로그램 성능 저하의 요인이 됨 => StringBuffer 또는 StringBuilder 클래스를 이용해 임시로 문자열을 저장하고 추가, 수정, 삭제 작업을 진행 - StringBuffer은 멀티 스레드 환경에서 사용할 수 있도록 동기화가 적용되어 스레드에 안전 - StringBuilder는 단일 스레드 환경에서만 사용하도록 설계 11-7-1. St..
-
[Java 자바] 11. 기본 API 클래스 ⑤ StringTokenizer 클래스Programming/Java 2022. 9. 4. 21:24
11-6. StringTokenizer 클래스 11-6-1. split() 메소드 -특정 기호를 구분자로 문자열을 추출할 때 사용 String fruits = "apple, banana, orange, lemon"; String[] fruit = fruits.split(", "); for(String x : fruit) { System.out.println(x); } // apple // banana // orange // lemon 11-6-2. StringTokenizer 클래스 - 문자열이 한 종류의 구분자로 연결되어 있을 경우, StringTokenizer 클래스를 사용하면 손쉽게 문자열 분리 가능 - StringTokenizer 객체를 생성할 때 전체 문자열을 주고, 두 번째 매개값으로 구분자를..
-
[Java 자바] 11. 기본 API 클래스 ④ String 클래스Programming/Java 2022. 9. 4. 21:08
11-5. String 클래스 11-5-1. String 생성자 // 배열 전체를 String 객체로 생성 byte[] bytes = { 72, 101, 108, 108, 111, 32, 74, 97, 118, 97}; String str = new String(byte[] bytes); System.out.println(str1); // Hello Java 11-5-2. String 메소드 1) 문자 추출 (charAt(int index)) - 매개값으로 주어진 인덱스의 문자를 리턴 String str = "Erin"; char charValue = str.charAt(1); System.out.println(charValue);// r 2) 문자열 비교 (equals()) - String의 경우, 동..
-
[알고리즘] 카운팅 정렬 (Counting sort) - 자바 JavaComputer Science/Algorithm 2022. 8. 21. 21:38
[ 개념 ] 항목들의 순서를 결정하기 위해 집합에 각 항목이 몇 개씩 있는지 세는 작업을 하여, 선형 시간에 정렬하는 효율적 알고리즘 - 정수나 정수로 표현할 수 있는 자료만 적용 가능 (각 항목의 발생 횟수를 기록하기 위해 정수 항목으로 인덱스가 되는 카운트들의 배열을 사용하기 때문) - 카운트를 위한 충분한 공간을 할당하려면 집합 내의 가장 큰 정수를 알아야 함 [ 과정 설명 (오름차순) ] 1) Data 배열에서의 최댓값을 최대 인덱스로 갖는 counts 배열 생성 후, data에 각 인덱스에 해당하는 숫자가 몇 번 등장하는지 누적 카운팅 2) 뒤에서 부터 탐색하며, data 배열의 값에 해당하는 count 배열 인덱스로 가서 값을 -1 해준 뒤, result 배열에 해당 값의 인덱스로 가서 dat..
-
[알고리즘] 이진 검색 (Binary search) - 자바 JavaComputer Science/Algorithm 2022. 8. 21. 20:40
📍 검색이란? - 저장되어 있는 자료 중에서 원하는 항목을 찾는 작업 - 목적하는 탐색 키(자료를 구별하여 인식할 수 있는 키)를 가진 항목을 찾는 것 [ 이진 검색이란? ] : 자료의 가운데에 있는 항목의 키 값과 비교하여 다음 검색의 위치를 결정하여 검색을 진행하는 방법 - 목적 키를 찾을 때까지 이진 검색을 순환적으로 반복 수행함으로써, 검색 범위를 반으로 감소시켜 보다 빠르게 검색 가능 - 이진 검색을 위해서는 자료가 반드시 정렬된 상태여야 함 [ 검색 과정 ] - 자료의 중앙에 있는 원소를 고르고 찾고자 하는 목표 값을 비교 - 목표 값이 중앙 원소의 값보다 작으면 자료의 왼쪽 반에 대해 새로 검색을 수행, 반대는 오른쪽 반에 대해 검색 수행 - 찾고자 하는 값을 찾을 때까지 반복 [ 코드 예시..
-
[알고리즘] 순차 검색 (Sequential search) - 자바 JavaComputer Science/Algorithm 2022. 8. 21. 20:05
📍 검색이란? - 저장되어 있는 자료 중에서 원하는 항목을 찾는 작업 - 목적하는 탐색 키(자료를 구별하여 인식할 수 있는 키)를 가진 항목을 찾는 것 [ 순차 검색이란? ] : 원하는 키 값을 갖고 있는 요소를 만날 때까지 맨 앞에서부터 순서대로 요소를 검색하는 알고리즘 (선형 검색) - 가장 간단하고 직관적이며, 배열/연결리스트 등 순차구조로 구현된 자료구조에서 검색시 유용 - 알고리즘이 단순하여 구현은 쉬우나 검색 대상수가 늘어날수록 시간이 급격히 증가하여 비효율적 [ 검색 과정 ] - 첫 번째 원소부터 순서대로 검색 대상과 키 값이 같은 원소가 있는지 비교 - 키 값이 동일한 원소를 찾으면 해당 원소의 인덱스 반환 - 자료구조의 마지막까지 대상을 찾지 못하면 검색 실패 - 정렬되어 있는 배열의 경..
-
[알고리즘] 퀵 정렬 (Quick sort) - 자바 JavaComputer Science/Algorithm 2022. 8. 14. 12:54
[ 개념 ] - 분할 정복(divide and conquer) 방법을 통해 주어진 배열 정렬 - 불안정 정렬, 비교 정렬 📍 분할 정복 (divide and conquer) : 문제를 작은 2개의 문제로 분리하고 각각을 해결한 후, 결과를 모아 원래의 문제를 해결하는 방법 [ 과정 설명 (오름차순) ] - 배열 가운데 하나의 원소를 고르며, 그 원소를 pivot 이라고 함(피벗을 기준으로 비균등하게 2개의 부분 배열로 분할) - 피벗을 기준으로 피벗 앞에는 피벗보다 작은 수가, 오른쪽에는 피벗보다 큰 수가 옮겨짐 - 피벗을 제외한 왼쪽 리스트와 오른쪽 리스트를 다시 정렬(피벗을 다시 선택해 정렬을 반복) - 부분 리스트들이 더 이상 분할이 불가능할 때까지 반복 [초기 배열] 6 9 20 3 5 10 7 ..