본문 바로가기

JAVA

(158)
자료구조 summary, 시간복잡도 # 간단하게 // 1 : 가장빠름 // log(n) : 중 // n :느림 faster O(1) < O(log n) < O(nlog n) < O(n²) < O(2ⁿ) slower slower로 갈수록(즉, 오른쪽 방향으로 갈수록) 효율성이 떨어집니다. 1. O(1) (constant) 입력데이터의 크기에 상관없이 언제나 처리속도는 동행하게 이루어진다. ex) sorted Array search 2. O(log n) (logarithmic) 입력데이터의 크기가 커지더라도 처리속도가 크게 달라지지 않으며, 실행시간이 지날수록 처리해야 하는 데이터의 양이 절반으로 줄어드며 실행 시간은 증가하지만 속도는 감소한다. ex) Binary search 3. O(n) (linear) 입력데이터의 크기에 비례해서 처리시..
상속_array활용2 // Person 클래스와 상속 받을 하위 클래스들 정의 class Person { private String name;// 공통 인스턴스 ★★★ public Person(String name) { this.name = name; } public String getDescription() {// 각 클래스에서 객체의 정보를 문자열로 반환하는 메서드 return "Name: " + name; // 각 하위 클래스에서 '오버라이딩하여 해당 클래스의 정보를 반환하도록 구현'됨 } } class Student extends Person { private String major;// 개인 인스턴스 public Student(String name, String major) { super(name);// super(..
상속_array활용 class Student extends Person{ Student(int a, int b){ System.out.println("여기다가 사용자가 정보를 입력하면 a,b가 arr[0]에 들어가는 거겠지"); } } class Police extends Person{ int c1; } class FireMan extends Person{} // 학생4명, 경찰 5명, 소방관 3명.... --> 각각 배열을 만드는게 원래 내가하던것 // 1. 근데 이제 전~체를 묶어서 배열을 돌릴 수 있어. class Person{}// --> 2. Person으로 배열을 받으면 되겠지 public static void main(String[] args) { Person[] arr = new Person[10]; // 이..
Object class Object 클래스 : Java 클래스 계층 구조의 최상위 클래스이며, 모든 클래스의 슈퍼 클래스 // --> 따라서 Object 클래스의 참조 변수는 모든 객체를 참조할 수 있음 Object ref = new AAA(); // 2.이게 된다는 말임 (= Object가 참조타입인 변수들은 모든걸 받아낼 수 있다!!!) ref = 1; ref = "안녕"; ref = true; ref = new int[10]; ref = new Scanner(System.in); // Q.ref.method는 왜 안돼? // AAA class를 하위클래스로 받은거잖아, 상위는 하위클래스의 매소드를 호출 못하지?ㅎㅎㅎ; class AAA{/* extends Object*/// 1. 모든 클래스들은 Object를 상속받고있다..
HashMap2 // Hash Map : HashMap // Key : 무조건 String으로 생각하자!!! // Value : 내가 넣고싶은대로. HashMap map = new HashMap(); // 값을 넣을때 : key와 value로 넣는다! map.put("1111", 99); map.put("1111", 8); map.put("1113", 99); map.put("1114", 5); // 값을 추출할 때 : key로 값을 뽑는당 int v = map.get("1111"); System.out.println(v); // 출력 : 8 // Q. "1111"이 99랑 8이있는데 왜 8이 출력? // A. 값의 중복은 허락한다. 그러나, 덮어쓰기가 돼서 제일 마지막에 입력된값으로 출력되는거임 map.put("111..
HashMap // Hash Map : HashMap // Key : 무조건 String으로 생각하자!!! // Value : 내가 넣고싶은대로. ##HashMap: // - 해시 함수를 사용하여 각 키를 해시 코드로 변환하고, 이 해시 코드를 이용하여 데이터를 저장하고 검색함 // - 이를 통해 매우 빠른 검색 속도(O(1))를 제공할 수 있음 # 특징: // // 1. 키-값 쌍 (Key-Value Pair): HashMap은 키와 값의 쌍으로 데이터를 저장합니다. // --> 키(key)는 중복되지 않으며, 각 키에 대응하는 값(value)을 저장합니다. // // 2. 해시 함수 (Hash Function): 키를 해시 코드로 변환하는 함수 // --> 해시 맵 내부에서 데이터를 저장하고 검색할 때 사용됩니다...
Set # Binary Tree (숫자찾기 게임 생각하기 - 계속 중간값 부르지?) ## Set // - 중복된 요소를 허용하지 않고, 순서를 보장하지 않는 집합 // - 이는 자료의 고유성을 유지하고, 집합 연산(교집합, 합집합, 차집합 등)을 수행하기 위해 사용됨 // - ex) UpDown게임할때 중간값을 계속 부르지? // --> Binary Tree(Root가 제일 위에있고, 17을 부르면 왼쪽은 ~16 오른쪽은 18~ 이렇게 계속 뻗어나가) // # 특징(로또 추첨이랑 특징이 비슷하군): // // 1. 중복 요소 허용하지 않음: Set은 동일한 요소를 중복해서 저장하지 않습니다. // --> 따라서 Set 내에는 고유한 요소만 포함됩니다. // // 2. 순서를 보장하지 않음: Set은 요소의 저장..
Queue ## 큐(Queue): // - 데이터를 선입선출(FIFO, First-In-First-Out) 방식으로 저장하고 관리 // - 주로 데이터의 순서를 보존하고 처리할 때 사용되며, 다양한 응용 분야에서 유용하게 활용됨 // - 아메 주문을 받은데, 얼음을 주르륵 만들고... 이런게 아니라, "하나만들고 결제하고.. 하나만들고 결제하고..." // # 특징: // // 1. 선입선출 (FIFO): 가장 먼저 추가된 요소가 가장 먼저 제거됩니다. // 이러한 특성은 대기열(Queue)에서 요소를 처리하는 데 매우 유용합니다. // // 2. 요소 추가 및 제거: 주로 enqueue (요소 추가=add)와 dequeue (요소 제거=poll) 연산을 통해 데이터를 관리합니다. // // 3. 한쪽 끝에서 추가..