Primitve(기본형), Reference(참조형) 타입
- 레퍼런스 타입은 프리미티브 타입보다 연산 속도가 더 느리다.
앱실론(epsilon)
- 자바는 float, double 등의 실수 를 부동소수점 방식을 사용하여 표기한다. 부동 소수형 데이터를 이진법으로 표현하기 때문에 표현 시, 오차가 발생할 수 있다. 이를 앱실로이라고 한다.
- 코테에서 부동소수형 데이터를 다룰 땐, 이 앱실론을 생각하여 오류를 방지해야 한다.
- 대부분의 언어가 하드웨어 수준에서 정해진 국제표준을 따르기 때문에, 0.1이나 0.2와 같은 소수를 정확하게 표현해주지 않는다.
- 예를 들면 소수점 비교 시, == 연산자를 사용하면 예상과 다른 결과를 얻을 수 있다.
- 정밀 계산이 필요하면 Bingdecimal, Decimal등의 정확한 수치 타입을 사용해야 한다.
- ex) 0.1 + 0.2 = 0.3, 0.3 - 0.3 = 0일 것 같지만.. 부동소수점 이진법 표현으로 다른 값이 나온다는 점이다.
- 이 오차가 코테 풀 때도 에러를 일으킬 수 있기 때문에 반드시 주의해야 한다.
컬렉션 프레임 워크
- 대표적인 컬렉션 프레임워크에는 리스트, 스택, 큐, 데크, 해시맵 등이 있다.
배열
int[] array = {1, 2, 3, 5, 6};
int[] array2 = new int[] {1, 2, 3, 5, 6};
int[] array3 = new int[5];
- Array.toString() 메서드를 사용하면 배열 요소를 쉽게 출력 가능
- 배열은 인덱스로 배열의 원소에 접근한다.
- 배열은 생성 이후에 크기를 변경할 수 없다. 따라서 배열 생성 이후 새 데이터를 삽입하거나 삭제할 수 없다.
- 인덱스를 이용한 배열 요소에 대한 접근, 변경의 시간 복잡도는 O(1)이다.
리스트(ArrayList)
ArrayList<Integer> ar = new ArrayList<>();
- 코테 기준 ArrayList를 의미한다.
- 가변 크기이기 때문에 데이터를 쉽게 삭제하거나 삽입할 수 있다.
- 하지만, 새 데이터를 맨 뒤에 추가할 떈 평균 시간 복잡도가 O(1)이며, 기존 데이터의 삭제 혹은 데이터를 중간 삽입할 때는 시간 복잡도가 O(N)으로 커질 수 있기 때문에 주의가 필요하다.
- 메서드 없이 그냥 출력할 수 있다.
해시맵
HashMap<String, Integer> map = new HashMap();
- 키, 값을 쌍으로 저장하는 해시 테이블로 구현되어 있다.
- 키를 사용하여 값을 검색하는 자료구조이다.
- 메서드 없이 그냥 출력할 수 있다.
- get() : 키 값으로 값 찾아줌
- put(): 해당 키 값을 지정한 값으로 변경해줌
- remove() : 키를 찾아서 해시맵에서 삭제 해줌
- containsKey(): 해당 키가 해시맵에 있는지 확인해줌
- 참고로 자바에는 값 없이 "키"만 저장하는 HastSet도 있다.
문자열
- 문자열은 변경 불가능한 객체를 의미한다.
- 즉, 문자열 변수에 새로운 문자열을 할당하면, 기존 객체를 수정하는 것이 아니라, 새로운 객체를 반환하는 것이다.
- 기존에 참조하고 있던 객체를 더이상 참조하지 않고 새로운 주소를 참조하는 것이다. 즉, 변경이 아니다!
- replace(): 문자열을 수정한다.
StringBuffer, StringBuilder
String값을 변경하는 연산이 많을 때는 효율이 높은 StringBuilder 클래스나, StringBuffer 클래스를 사용해야 한다.
보통 더 빠른 StringBuilder를 사용한다.
deleteCharAt(): 해당 인덱스 문자 삭제
insert(): 해당 인덱스에 해당 문자 추가
메서드
람다식
코딩 테스트 코드 구현 노하우
조기 반환
- return을 사용하여 실행 과정이 함수 끝까지 도달하기 전에 반환하는 기법이다.
- if문 같은 곳에서 사용 가능
보호 구문
- 본격적인 로직을 진행하기 전, 예외 처리 코드를 추가하는 기법이다.
- 조건문을 이요하여 초기에 입력값이 유효한지 검사하고, 그렇지 않으면 바로 함수를 종료하는 보호 구문을 쓰기도 한다. (null 일 경우, 데이터가 isEmpty()일 경우 등)
제네릭
- 컬렉션 사용 시, 타입 체크와 형 변환을 생략할 수 있게 해준다. 코테에서 여러 타입의 데이터를 하나의 컬렉션에 넣어야 하는 경우는 거의 없으니, 제네릭으로 타입을 강제하여 실수를 방지하도록 하자.
'코딩테스트 > 자료구조 & etc' 카테고리의 다른 글
큐(Queue) (0) | 2025.05.16 |
---|---|
스택 (0) | 2025.05.08 |
배열의 시간 복잡도 (0) | 2025.04.10 |
시간 복잡도 (0) | 2025.04.09 |
코딩테스트 준비 (0) | 2025.04.01 |