728x90
반응형

자료구조 알고리즘 코딩테스트 문제풀이/알고리즘 - Do it 31

알고리즘 구간 합

구간 합 합 배열 을 이용하여 시간 복잡도를 더 줄이기 위한 특수 목적 알고리즘 합 배열 배열에서 특정 범위에 존재하는 요소의 합 합 배열 정의 S [ i ] = A [ 0 ] + A [ 1 ] + ...... + A [ i - 1 ] + A [ i ] ex) i가 4일 때 합 배열 = A [ 0 ] ~ A [ 4 ] 까지의 합 쉽게말해 누적합을 말한다. 합 배열 공식 S [ i ] = S [ i - 1 ] + A [ i ] 구간합 공식 배열 인덱스 i 부터 인덱스 j 까지의 합 S [ j ] - S [ i - 1 ] ex) 2 ~ 5까지의 합 = S [ 5 ] - S [ 1 ] 배열 A 의 0 ~ 1까지의 합은 3 + 9 = 12 이다. 배열 A 의 2 ~ 5까지의 합은 5 + 10 + 4 + 8 = ..

디버깅의 중요성 (코딩테스트 뿐만 아니라 실무에서도)

디버깅이란? 코드의 논리 오류를 잡을때 사용하는 방법중 하나로 가장 뛰어난 오류 탐색법이라고 할 수 있다. 디버깅이 중요한 이유 log로 찍어보는것보다 훨씬 빠르고 간편하다. 코딩테스트 오답 예 index 범위 1차이로 인한 오답 int -> long 변환 - 정수 타입의 범위로 인한 오답 ★ 디버깅 하는 법 1. 코드에서 디버깅 하고자 하는 줄에 중단점(break point)을 설정한다. 2. IDE 디버깅 기능을 실행한다. (이때 여러개의 중단점 설정이 가능하다.) 디버그 기능 Step Over : 해당 Point에서 다음 라인으로 한줄 씩 이동 Step Into : 해당 Point에서 메소드 호출 시 해당 메소드 내부를 1줄씩 탐색 Resume : 다음 Point로 건너 뛴다 (예를들어 point가..

시간복잡도 이론

시간복잡도란? 알고리즘 선택의 기준 주어진 문제를 해결하기 위한 '연산 횟수' 일반적으로 수행시간은 1억 번의 연산을 1초의 시간으로 간주하여 예측 ex) 시간제한 2초라고 가정한다면 2억 번의 연산 안에 도출 시간 복잡도 유형 빅-오메가(Ω(n)) : 최선일 때(best case)의 연산 횟수를 나타낸 표기법 빅-세타(Θ(n)) : 보통일 때(average case)의 연산 횟수를 나타낸 표기법 빅-오(O(n)) : 최악일 때(worst case)의 연산 횟수를 나타낸 표기법 public class timeComplexityEx01 { public static void main(String[] args) { int findNumber = (int)(Math.random() * 100); for(int ..