IT공부/Algorithm 12

[Linear Search] 선형 탐색

선형 탐색 - 선형 탐색은 배열/리스트 에서 주어진 원소를 찾을 때 사용한다. - 일렬로 된 자료를 차례대로 탐색하는 알고리즘이다. - 찾고자 하는 원소를 찾을 때 까지 또는 모든 원소의 순회가 끝날 때 까지 진행된다. 동작원리는 배열 전체 left -> right 순차적 배열이다 각 단계 마다 찾는 원소를 확인하고 찾으면 순회를 멈춘다. 못찾았을 경우 다음 원소로 넘어가고, 같은 작업을 반복한다. 시간복잡도는 O(n) javascript indexOf 배열을 생각하면 된다

IT공부/Algorithm 2023.11.09

투 포인터 기법

// 다음의 배열에서, 합이 x인 연속 부분배열의 개수를 구하라 // arr = [ 1, 3, 6, 5, 2, 7, 9 ], x = 9 function countSubArrSumOfX(arr, x) { let count = 0; let sum = 0; let left = 0; let right = 0; while(right x){ sum -= arr[left] left++ } } return count; } console.log(countSubArrSumOfX([1, 3, 6, 5, 2, 7, 9], 9)) // 다음의 배열에서(정렬된), 두개의 원소의 합이 x와 같은지를 확인하고, 그렇다면 각각원소의 인덱스를 반환하라. // arr = [ 2, 4, 5, 7, 11, 15 ], x = 15 functi..

IT공부/Algorithm 2023.11.08

Big-O 표기법

https://youtu.be/5Ky59iblLBI?list=PL3xNAKVIm80KOJ0g_OuJ7z-K9Esz4laZC 빅오 표기법이란 - 알고리즘의 성능을 나타내는 표기법 - 시간/공간 복잡도 예측 시 사용 - N 값의 증가에 따른 처리 시간 또는 필요 공간 계산 -> 점근적 표현법 중 하나로, 일반적으로 상수와 계수를 제거하고 복잡도를 단순화 하여 나타낸다 빅오 표기법을 사용하면 애매해질 수 있는 연산 횟수 계산법을 하나의 일관된 형식으로 만들어 알고리즘의 런타임이 인풋의 증가에 따라 어떻게 증가하는지 설명할 수 있게 해준다. : 알고리즘의 직접적인 모든 연산 횟수를 계산 하는 것이 아닌, 인풋의 증가에 따른 연산 처리시간의 증가율을 예측하는 척도 빨간색이 제일 빠름 빅오 표기법 규칙 - 최고차항..

IT공부/Algorithm 2023.11.06

DFS 깊이 우선 탐색

Depth-first search 그래프 완전 탐색 기법 중 하나로 그래프의 시작 노드에서 출발하여 탐색할 한 쪽 분기를 정하여 최대 깊이까지 탐색을 마친 후 다른 쪽 분기로 이동하여 탐색을 수행하는 알고리즘 실제 구현 시 재귀 함수를 사용하므로 스택 오버플로우를 유의해야한다 단절점 찾기, 단절선 찾기, 사이클 찾기, 위상 정렬 DFS는 한 번 방문한 노드에 다시 방문하면 안됨 -> 체크 배열이 필요하다는 점 DFS탐색 방식 : 후입선출 특성을 가지고 있음

IT공부/Algorithm 2023.11.05

[백준 11820] 숫자의 합 구하기

슈도코드 작성 N값 입력 받은 뒤 String 형 변수에 저장하기 char[]형 변수로 변환하여 저장 int형 변수 sum 선언하기 for () 문 반복 아스키코드를 이용하여 정수형으로 숫자 변환 출력 Scanner sc = new Scanner(System.in); int N = sc.nextInt(); String sNum = sc.next(); char[] cNmu = sNum.toCharArray(); int sum = 0; for (int i = 0; i < cNum.length; i++){ sum += cNum[i] - '0'; // ASCII 코드 변환 } sout(sum);

IT공부/Algorithm 2023.11.04
728x90