1. 알고리즘 타임어택 풀이
풀이 후 QnA 시간:
코테 시 제한사항 필수 확인
숫자 단위 표현 : _ ex) 300_000 = 300,000
-> 가독성 목적
코드 작성: 프로그램에서 먼저 하고 코테 사이트에 옮기는 센스
long longType = Integer.MAX_VALUE + 1L;
// 형변환
*파이썬보다 자바의 실수, 정수 범위가 작다
자바에서는 데이터의 손실이 발생하지 않거나, 데이터의 손실이 최소화되는 방향으로 묵시적 타입변환을 진행
자동 형변환 : 데이터 크기가 더 큰 데이터 타입으로
(JAVA) 0.00 ~ 자동 더블인식/ 숫자는 자동 float인식
while은 끝을 알지 못할 때 쓴다(for는 범위를 알고 있을때)
String은 왜 배열처럼 쓸수 있는지?? for문, 슬라이싱, 인덱싱이 가능한지??
2. JAVA 기초 강좌
컬렉션 : 자료구조를 표현하는 인터페이스, 모든 자료구조가 implement하는 인터페이스
from TCP SCHOOL.com : 컬렉션 프레임워크 http://www.tcpschool.com/java/java_collectionFramework_concept
컬렉션 프레임워크 : 자료구조 + 알고리즘을 클래스로 구현해놓은 것
주요 인터페이스 : LIST, SET, MAP (LIST와 SET은 컬렉션 인터페이스를 상속받지만, MAP은 별도 정의)
+제네릭
- List : 순서가 있는 데이터의 집합이며 데이터의 중복을 허용합니다. → ArrayList, LinkedList, Stack 등
- Set : 순서를 유지하지 않는 데이터의 집합이며 데이터의 중복을 허용하지 않습니다. → HashSet, TreeSet 등
- Map : 키(key)와 값(value)의 쌍으로 이루어진 데이터의 집합입니다. 순서는 유지되지 않으며 키는 중복을 허용되지 않고 값은 중복을 허용합니다. → HashMap, TreeMap 등
- Stack : 마지막에 넣은 데이터를 먼저 꺼내는 자료구조입니다. LIFO(Last In First Out) → Stack, ArrayDeque 등
- Queue : 먼저 넣은 데이터를 먼저 꺼내는 자료구조입니다. FIFO(First In First Out) → Queue, ArrayDeque 등
List 예제
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<Integer> integerList = new ArrayList<>();
integerList.add(1);
integerList.add(5);
integerList.add(20);
integerList.add(4);
integerList.add(15); //ArrayList에 값 추가
System.out.println(integerList);
Collections.sort(integerList);
System.out.println(integerList);
System.out.println(integerList.size());
//interList.remove(3); 인덱스 3번째 데이터 삭제
for(int i = 0; i < integerList.size(); i++) {
System.out.println(integerList.get(i));
}
// 리스트-> for/each문 사용 가능
for(int current : integerList) { //인덱스 없는 반복문
System.out.println(current);
}
}
}
HashSet 예제
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
public class Main {
public static void main(String[] args) {
/*인터페이스 형태, primitive 변수는 사용이 안된다!-> 참조형변수*/
Set<Integer> integerSet = new HashSet<>();/*클래스*/
integerSet.add(1);
integerSet.add(1);
integerSet.add(20);
integerSet.add(123);
integerSet.add(50);
System.out.println(integerSet);
Set<String> stringSet = new HashSet<>();
stringSet.add("서울");
stringSet.add("부산");
stringSet.add("부여");
stringSet.add("LA");
System.out.println(stringSet);
//stringSet.remove("서울");
List<String> target = new ArrayList<>();
target.add("뉴욕");
target.add("라스베가스");
target.removeAll(target);
System.out.println("LA 포함되어 있나요? " + stringSet.contains("LA")); // 데이터 자료구조 체크
System.out.println("라스베가스 포함되어 있나요? " + stringSet.contains("라스베가스"));
System.out.println(stringSet.size());
target.clear();
System.out.println(target);
}
}
HashMap 예제
import java.util.HashMap;
import java.util.Map;
public class Main {
public static void main(String[] args) {
Map<Integer, String> map = new HashMap<>();
//map은 인자로 키를 취급한다
map.put(1, "apple");
map.put(2, "berry");
map.put(3, "cherry");
System.out.println(map);
System.out.println("1st in map " + map.get(1));
//get은 인덱스가 아니라 키로 할당된 값을 받는다
map.remove(2);
System.out.println(map.containsKey(3));
System.out.println(map.containsValue("berry"));
System.out.println(map);
}
}
Stack 예제
import java.util.Stack;
public class Main {
public static void main(String[] args) {
Stack<Integer> stack = new Stack<>();
stack.push(1);
stack.push(1);
stack.push(2);
stack.push(3);
stack.push(5);
System.out.println(stack); //중복값 허용, 순서대로 저장됨
System.out.println(stack.peek()); //get만 할께
System.out.println("size: " + stack.size());
System.out.println(stack.pop()); //보면서 꺼낼께
System.out.println(stack);
System.out.println("size: " + stack.size());
System.out.println(stack.contains(1));
//java에 있는 stack에서 제공하는 contain
System.out.println(stack.empty()); //스택이 비어있니?
stack.clear();
System.out.println(stack.isEmpty()); //스택이 비어있니?
}
}
Queue 예제
import java.util.LinkedList;
import java.util.Queue;
public class Main {
public static void main(String[] args) {
Queue<Integer> queue = new LinkedList<>();
queue.add(1);
queue.add(5);
queue.add(3);
System.out.println(queue); //입력된 순서가 있다
System.out.println(queue.poll());
System.out.println(queue); // poll은 stack의 pop과 같다
System.out.println(queue.peek()); // = stack
}
}
ArrayDeque : 실무에서 많이 사용, 양 끝에 삽입/삭제가 모두 가능하
ArrayDeque 예제
import java.util.ArrayDeque;
public class Main {
public static void main(String[] args) {
ArrayDeque<Integer> arrayDeque = new ArrayDeque<>();
arrayDeque.addFirst(1); //배열의 맨 앞에 값 추가
arrayDeque.addFirst(1);
arrayDeque.addFirst(2);
arrayDeque.addFirst(3);
System.out.println(arrayDeque); // 순서가 있고, 중복 값 인정
arrayDeque.addLast(0); //배열의 맨 뒤에 값 추가
System.out.println(arrayDeque);
arrayDeque.offerFirst(10);
//배열의 맨 앞에 들어간다
// 큐의 크기문제가 생길때:
// offerFirst -> false/ addFirst -> exception
System.out.println(arrayDeque);
arrayDeque.offerLast(30);
System.out.println(arrayDeque);
arrayDeque.push(22); // = addFirst, offerFirst
System.out.println(arrayDeque);
System.out.println(arrayDeque.pop());
System.out.println(arrayDeque.peek());
System.out.println(arrayDeque.peekLast());
System.out.println(arrayDeque.peekFirst());// stack에서 제공
System.out.println(arrayDeque.poll()); // = push
System.out.println(arrayDeque.pollLast());
System.out.println(arrayDeque.pollFirst()); // queue에서 제공
System.out.println(arrayDeque.size());
arrayDeque.clear(); // collectiom 공통 size, clear, isEmpty 제공
System.out.println(arrayDeque.isEmpty());
System.out.println(arrayDeque);
}
}
'내일배움캠프 4기 스프링 > 내배캠 TIL📘' 카테고리의 다른 글
11. 18 객체 지향 프로그래밍 강의/ CS 강의/ 백문이불여일타(1): 계산기, JAVA (0) | 2022.11.19 |
---|---|
11. 17 객체 지향 프로그래밍 강의/ JAVA/ 알고리즘 강의 (0) | 2022.11.17 |
11. 15 JAVA 기초 강의/ 알고리즘 강의 + 그림으로 배우는 알고리즘 (0) | 2022.11.15 |
11. 14 알고리즘 강의/ JAVA 기초 강의/ 그림으로 배우는 알고리즘/ Leetcode (0) | 2022.11.14 |
11. 11 CS 특강/ 알고리즘 강의 (0) | 2022.11.11 |