코딩테스트/자료구조 & etc

코딩 테스트 필수 문법

soooy0 2025. 4. 9. 17:55
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