전체 글 338

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

[정렬] Bubble Sort

1 ~ 10까지로 섞여있는 배열을 가장 작은 순서대로 출력하기 버블 정렬은 가장 비효율적인 알고리즘 옆의 값과 비교해서 앞으로 보내버리는 알고리즘이다 수행시간 계산 10 + 9 + 8 + ... +1 => 10 * ( 10 + 1) / 2 = 55 => N * (N + 1 ) / 2 N이 매우 큰 수라는 가정하에 2는 큰 의미를 주지 않음 => O(N * N) 선택정렬처럼 버블정렬의 시간 복잡도는 O(N^2) 버블정렬은 근데 선택정렬보다 더 느리다. 매번 값을 비교하여 교체하기 때문에 해야하는 수행 양이 선택정렬보다 느리다

IT공부/Algorithm 2023.11.02

[정렬] Selection Sort

1 ~ 10까지로 섞여있는 배열을 가장 작은 순서대로 출력하기 수행시간 계산 10 + 9 + 8 + ... + 1 => 10 * ( 10 + 1) / 2 = 55 => N * (N + 1 ) / 2 N이 매우 큰 수라는 가정하에 2는 큰 의미를 주지 않음 => O(N * N) 이게 바로 특정한 알고리즘의 수행 시간을 찾음 선택정렬의 시간 복잡도는 O(N^2) * 참고로 이 선택정렬은 비교적으로 비효율적인 알고리즘이다. 처리할 갯수가 많을 수록 피해야할 알고리즘방법이다. https://youtu.be/8ZiSzteFRYc?list=PLRx0vPvlEmdDHxCvAQS1_6XV4deOwfVrz

IT공부/Algorithm 2023.11.01
728x90