일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 개발도서추천
- 힙한취미
- 정렬알고리즘
- 스파르타코딩
- 알고리즘책
- 알고리즘도서
- 알고리즘문제
- 웹개발종합반
- 평균온도구하기
- HTML
- 자료구조
- 리액트
- 타입스크립트
- 알고리즘책추천
- 코드최적화
- 빅오표기법
- 힙한취미코딩
- 자료구조책
- 코딩
- 개발도서
- 코딩테스트
- CSS
- 알고리즘
- 자바스크립트
- 이벤트맛집
- 짝수의평균구하기
- 스파르톤
- 개발책추천
- 누구나자료구조와알고리즘
- 스파르타코딩클럽
- Today
- Total
목록누구나자료구조와알고리즘 (6)
Run with coding

✔️ 평균 섭씨 온도 구하기 💡 나는 일기 예보 소프트웨어를 개발 중이다. 도시의 온도를 알려면 도시에 퍼져 있는 수많은 온도계에서 온도를 읽어 그 온도들의 평균을 구해야 한다. 온도는 섭씨와 화씨 둘 다로 표시하고 싶으나 읽을 때는 화씨다. 섭씨 온도 평균을 구하기 위해 알고리즘은 두가지 일을 한다. 1. 화씨 온도를 섭씨로 변환한다. 2. 섭씨 온도의 평균을 계산한다. 위 코드의 단계 수(빅 오)는 N + N = 2N = O(N)이다. for문 하나가 원소의 개수 N만큼 순회하는 것이 2개가 있음으로 N + N인 것이다. 👉🏻 빅 오가 아직 이해가 안된다면 이 글을 읽어보자! 저번 '단어 생성기' 알고리즘 구현했을 때도 for문이 두 개였는데 빅 오가 O(N^2)이였다. 그때는 중첩 루프였기 때문에 ..

✔️ 들어가기 전.. O(N^2) : 알고리즘이 "느리다"로 간주한다. 👉🏻즉, 더 빠른 대안, 최적화할 방법이 있는지 분석하라는 신호다! 아래의 문제들은 모두 Javascript로 풀었으니 다른 언어를 원한다면 다른 글을 찾아보자.. ✔️ 짝수의 평균 구하기 💡 수 배열을 받아 모든 짝수의 평균을 반환하자. 위 코드의 최악의 경우 빅 오 : 3N + 3단계 = O(3N + 3) = O(N) 👉🏻 빅 오 표기법은 상수를 무시한다. 자세한 내용은 이 글을 확인해보자!

✔️ 삽입 정렬 1. 인덱스 1의 값을 변수에 담아둔다. 2. 왼쪽의 값과 변수에 담아둔 값을 비교한다. 3. 왼쪽 값이 더 크다면 오른쪽으로 쉬프트, 작다면 해당 패스스루 끝내기 4. 쉬프트하여 빈 자리에 변수로 담아둔 값을 넣는다. 5. 마지막 인덱스까지 반복 ✔️ 삽입 정렬 코드 구현 ✔️ 삽입 정렬의 효율성 원소가 N개인 배열 비교 : 1 + 2 + 3 + … + (N-1) ⇒ 대략 N^2 / 2 번의 비교 시프트 : 1 + 2 + 3 + … + (N-1) ⇒ 대략 N^2 / 2 번의 비교 삭제 : N-1번 삽입 : N-1번 총 단계 수 : N^2 + 2N - 2단계 원소가 5개인 배열 비교 : 1 + 2 + 3 + 4 = 10번 시프트 : 1 + 2 + 3 + 4 = 10번 삭제 : 4번 삽입 ..

✔️선택 정렬 선택 정렬 방법 앞에서부터 순서대로 돌면서 최솟값이 있는 인덱스를 변수에 저장 다 돌았을 때 시작 인덱스와 변수에 저장된 인덱스의 값을 바꾼다. 배열 끝에서 시작하는 패스스루에 도달할 때까지 계속 반복 선택 정렬 실제로 해보기 선택 정렬의 효율성 버블 정렬의 단계 수 / 2 = 선택 정렬의 단계 수 즉, 선택 정렬의 단계 수는 O(N^2) / 2이다. 상수 무시하기 O(N^2 / 2) 이지만 빅오 표기법은 상수를 무시한다. 즉, /2를 버리고 O(N^2)로 표기한다. 그래서 버블 정렬과 선택 정렬의 실제 성능 차이는 크지만 빅 오 표기법만 봤을 땐 둘의 단계 수가 같다. 👉🏻 빅오만 보고 성능을 판단하기 쉽지 않다는 뜻이다. 빅 오의 또 다른 개념 빅 오 표기법은 일반적인 카테고리의 알고리..

✔️버블 정렬 : 매우 기본적인 정렬 알고리즘 버블 정렬 방법 배열의 첫 번째 원소부터 다음 원소와 비교하며 오른쪽 값이 더 크면 두 항목을 교환 교환이 일어나지 않는 패스스루가 생길 때까지 반복 버블 : 각 패스스루마다 정렬되지 않는 값 중 가장 큰 값 버블 정렬 실제로 해보기 버블 정렬의 효율성 버블 정렬 알고리즘 = 비교 + 교환 ex) 원소가 5개라면.. ⇒ 총 20단계 비교 : 4 + 3 + 2 + 1 = 10번 교환 : 4 + 3 + 2 + 1 = 10번 ex) 원소가 10개라면.. ⇒ 총 90단계 비교 : 9 + 8 + 7 + … + 1 = 45번 교환 : 9 + 8 + 7 + … + 1 = 45번 ex) 원소가 20개라면.. ⇒ 총 380단계 비교 : 20 + 19 + 18 + … + 1 ..
✔️빅 오가 무엇인가? 빅 오 = 원소가 N개일 때 몇 단계가 필요할까? 빅 오의 본질 빅 오는 데이터가 늘어날 때 단계가 어떻게 증가하는 지를 설명한다. 즉, 데이터가 늘어날 때 알고리즘 성능이 어떻게 바뀌는지 O(N) = 알고리즘에 N단계가 필요하다. N은 항상 상수 O(1) = 가장 빠른 알고리즘 단계 배열 읽기에는 딱 한 단계만 필요 O(1) VS O(N) 데이터가 증가할수록 O(N)이 O(1)보다 덜 효율적인 어떤 지점에 반드시 다다르게 됨 선형 검색의 효율성을 빅 오로 표기해보자! 찾고자 하는 항목이 첫 번째 있다면 : 최선의 시나리오 O(1) 찾고자 하는 항목이 마지막에 있다면 원소N개를 모두 검색해야 하기 때문에 : 최악의 시나리오 O(N) 별도로 명시하지 않는 한 빅 오 표기법은 최악의 ..