728x90
반응형
1. 숫자 합산은 long 타입으로 진행한다. (int로 합산하다가 overflow 날 수도 있기 때문)
2. Stack을 구현할 때에는 Stack 클래스를 쓰지 않는다.
옛날에 구현된 Stack 클래스는 동기화 강제, Vector 상속으로 무거운 클래스와 필요없는 기능까지 있어 속도가 매우 느리다.
Deque<T> stack = new ArrayDeque<>();
위 와같이 덱 클래스를 쓰면 매우 빠른 속도를 낼 수 있다.
3. 문자열 연결은 StringBuilder를 쓰자. (특히 반복문!)
- 단순 연결: String str = "A" + "B"는 괜찮음.
- 반복 연결: for문 안에서 str += "A"를 하면 매번 새로운 객체가 생성되어 메모리와 시간이 폭발적으로 낭비됨.
- 출력: System.out.println을 여러 번 호출하는 것보다, StringBuilder에 모아두고 마지막에 한 번만 출력하는 것이 압도적으로 빠르다.
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 100000; i++) {
// 기존 객체에 살만 갖다 붙임 (O(N))
sb.append("가나다라");
}
System.out.println(sb); // 출력할 때 딱 한 번만 String으로 변환
4. Wrapper 클래스 대신에 기본형 타입의 자료형을 선택한다.
int, long과 같은 기본형과 Integer, Long과 같은 객체형 타입이 존재하는데, 코딩테스트에서는 가능한 기본형을 사용해야 한다.
객체형이 메모리를 더 많이 차지하기 때문이다.
5. 나눗셈(/)과 나머지(%) 연산을 지양한다.
컴퓨터 구조상 덧셈, 뺄셈, 비트 연산(&, ^, |, <<)은 매우 빠르지만, 나눗셈과 나머지 연산은 상대적으로 느리다.
아래 자료구조 Queue를 직접 구현할때의 예시다.
// [느림] 나머지 연산 사용
index = (index + 1) % size;
// [빠름] 조건문 사용
index++;
if (index == size) {
index = 0;
}
728x90
반응형
'Coding Test' 카테고리의 다른 글
| 알고리즘 - 이분 탐색(Binary Search) (0) | 2026.02.03 |
|---|---|
| 자료구조 - 원형 큐(Circular Queue) (0) | 2026.01.29 |
| 자료구조 - 큐(Queue) (0) | 2026.01.29 |
| 자료구조 - 스택(Stack) (0) | 2026.01.29 |
| 자료구조 - 배열(Array) vs 연결 리스트(Linked List) (0) | 2026.01.29 |