코딩테스트/etc 5

스택

FILO(First In Last Out) 먼저 들어간 것이 마지막에 나오는 규칙 = 선입후출이때, 스택에 삽입하는 연산을 push, 꺼내는 연산을 pop이라고 한다. 동작 원리초기에 빈 스택이 존재데이터 1 push > (아래) 1 (위)데이터 2 push > (아래) 1 2 (위)pop을 하면? > (아래) 1 (위), 맨 위에 있던 2가 빠져나옴데이터 3 push > (아래) 1 3 (위)pop을 연속 2번 하면? > (아래) 1 3 (위), 맨 위에 있던 3부터 '3', '1' 순서로 빠져나옴스택의 ADT(Abstract data type)ADT란? 우리말로 추상 자료형이다. 인터페이스만 있고 실제로 구현은 되지 않은 자료형자바는 컬렉션 프레임워크에서 Stack 클래스를 제공하기 때문에 클..

코딩테스트/etc 2025.05.08

배열의 시간 복잡도

Point데이터에 자주 접근하거나 읽어야 하는 경우, 배열을 사용하면 좋은 성능을 낼 수 있다.하지만 배열은 메모리 공간을 충분히 확보해야 하기 때문에할당할 수 있는 메모리의 크기를 확인하고, 배열로 표현하려는 데이터가 너무 많으면 런타임에서 배열 할당에 실패할 수 있다.중간에 데이터 삽입이 많은지 확인해야 한다. 배열은 선형 자료구조이기 때문에 중간이나 처음에 데이터를 빈번하게 삽입하면 시간 복잡도가 높아져 시간초과가 발생할 수 있다는 점이다.또한, 원본 배열을 그대로 수정하지 않길 원한다면, clone()메서드를 사용하여 배열을 복사해서 사용하자. sort() 메서드 사용할 경우와 O(N²) 알고리즘 사용할 경우버블정렬은 1초가 걸리지만, sort() 메서드는 0.1초도 걸리지 않는다. 시간 차이가 ..

코딩테스트/etc 2025.04.10

코딩 테스트 필수 문법

Primitve(기본형), Reference(참조형) 타입레퍼런스 타입은 프리미티브 타입보다 연산 속도가 더 느리다. 앱실론(epsilon)자바는 float, double 등의 실수 를 부동소수점 방식을 사용하여 표기한다. 부동 소수형 데이터를 이진법으로 표현하기 때문에 표현 시, 오차가 발생할 수 있다. 이를 앱실로이라고 한다.코테에서 부동소수형 데이터를 다룰 땐, 이 앱실론을 생각하여 오류를 방지해야 한다.대부분의 언어가 하드웨어 수준에서 정해진 국제표준을 따르기 때문에, 0.1이나 0.2와 같은 소수를 정확하게 표현해주지 않는다.예를 들면 소수점 비교 시, == 연산자를 사용하면 예상과 다른 결과를 얻을 수 있다.정밀 계산이 필요하면 Bingdecimal, Decimal등의 정확한 수치 타입을 사용..

코딩테스트/etc 2025.04.09

시간 복잡도

가장 효율적으로 해결하는 알고리즘이 각 코테 문제에 존재한다.우리는 여러 알고리즘 중 당연히 문제를 빠르게 푸는 알고리즘을 선택해야 한다.그렇다면 어떤 것을 기준으로 알고리즘을 선택해야 할까? -> 바로 '시간 복잡도'를 보고 선정해야 한다. 시간 복잡도 시간 복잡도란, 알고리즘의 성능을 나타내는 지표로, 입력 크기에 대한 연산 횟수의 상한을 의미한다. 시간 복잡도는 낮으면 낮을 수록 좋다.입력크기는 쉽게 말해서, 알고리즘이 처리해야 할, 데이터 양이라고 생각하면 된다. 책장에 꽂혀있는 5권의 책을 정리해야 하는 문제라면, 이때의 입력 크기는 5가 된다. 1차원 배열 검색하기값을 가장 빨리 찾는 경우검색 시작 위치에 찾을 값이 바로 있는 경우이다. = 연산 비교 횟수가 최소임값을 가장 늦게 찾는 경우아예..

코딩테스트/etc 2025.04.09

코딩테스트 준비

데이터의 흐름이나 (문제)구성을 먼저 파악할 것만약 데이터의 삽입과 삭제가 빈번하게 일어나는 상황에서 최댓값 혹은 최솟값을 반복하여 구해야 한다면 힙 자료구조를 고려하는 게 좋을 수 있다.데이터가 50개 미만이고, 입력값을 깔끔하게 정리하기 어렵다면 하드 코딩을 고려하기도 한다.데이터의 값의 차이가 크면 데이터 값 자체를 배열의 인덱스로 활용하는 건 피하는 것이 좋다. (ex, {1, 10100, 5000}으로 데이터가 구성되어 있을 경우, 나머지 2~4999등의 공간은 사용하지 않는 공간이지만 메모리가 할당되므로 낭비이기 때문) 의사코드 작성하기세부 구현까지는 작성하지 말기.ex) 국어, 영어 수학 점수를 입력받는다 (O)ex) 크기가 256 바이트인 문자열 배열을 3개 선언해서 표준 입력으로 국어, ..

코딩테스트/etc 2025.04.01