일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- break
- DATABASE
- o(log n)
- DB 제약조건
- Oracle
- 자바
- C#접근제어자
- java접근제어자
- DAO
- 데이터베이스
- sql
- DTO
- Oracle SQL Developer
- 접근제한자
- JavaSwing
- 메이븐업데이트
- 오라클
- JSP
- C#접근제한자
- O(n)
- java
- oracle db
- oracle developer
- 빅오표기법
- DB
- 자바연산자
- mvc디자인패턴
- Vo
- DEFAULT
- C언어 표준 라이브러리
Archives
성장일기 : 문과생의 개발 여정 (งᐖ)ว ( ᐛ )و
JS / 시간 복잡도를 빅오 표기법으로 바꾸기 본문
// 1. 주어진 연도가 윤년인지 아닌지를 확인
// 함수에 전달된 년도를 N, 년도가 몇이든 알고리즘에 걸리는 단계수는 일정함으로 O(1)
const isLeapYear = (year) => {
return (year % 100 === 0) ? (year % 400 === 0) : (year % 4 === 0);
}
// 2. 배열의 합을 계산하는 함수
// 배열에 원소가 N개일 때 루프는 N번 실행됨으로 O(N)
const arraySum = (array) => {
let sum = 0;
for (let i = 0; i < array.length; i++) {
sum += array[i];
}
return sum;
}
// 3. 주어진 곡물 수에 대해 체스판의 공간을 계산하는 함수
// 곡물 수에 대한 이진 탐색이 이루어진다.
// N이 두배 늘어날 때마다 루프를 한 번 더 실행함으로 시간 복잡도는 O(log n)
const chessboardSpace = (numberOfGrains) => {
let chessboardSpaces = 1;
let placedGrains = 1;
while (placedGrains < numberOfGrains) {
placedGrains *= 2;
chessboardSpaces += 1;
}
return chessboardSpaces;
}
// 4. 배열에서 "a"로 시작하는 문자열만 선택하는 함수
// N은 배열 내 문자열 개수이고 배열의 길이에 비례하여 반복문이 실행됨으로 O(N)
const selectAStrings = (array) => {
let newArray = [];
for (let i = 0; i < array.length; i++) {
if (array[i].startsWith("a")) {
newArray.push(array[i]);
}
}
return newArray;
}
// 5. 배열을 정렬하고, 중간값을 계산하는 함수
// 배열의 크기 N이 얼마든 알고리즘에는 정해진 단계 수만큼 걸림으로 O(1)
const median = (array) => {
const middle = Math.floor(array.length / 2);
if (array.length % 2 === 0) {
return (array[middle - 1] + array[middle]) / 2;
} else {
return array[middle];
}
}
'알고리즘' 카테고리의 다른 글
[ 빅 오 표기 ] 선형검색 알고리즘 O(n) (0) | 2024.02.18 |
---|---|
이진 검색 알고리즘(binary search algorithm) (0) | 2024.01.14 |