본문 바로가기

분류 전체보기

(165)
[완강 후기] 포큐 아카데미 'COMP2500 객체지향 프로그래밍 및 설계' - 공부 기간 : 2022년 5월 2일 ~ 8월 15일 (총 15주 과정) - 공부 시간 : 총 115시간 59분 - 플랫폼 : POCU 아카데미 홈페이지 - 100% 온라인 강의 선택 이유 현재 개발자로 일하고 있는 지인의 소개로 포큐(POCU) 아카데미를 처음 알게 됐다. 그 친구는 나에게 포큐 과정을 입이 닳도록 칭찬했는데 요약하자면 "해당 코스를 패스만 해도 바로 실무에서 일할 수 있을 정도의 실력이다"라고 높게 평가했다. 포큐 아카데미에는 다양한 강좌가 개설되어 있다. '왕초보 프로그래밍 입문(C#)'부터 '실무 프로그래밍 입문', 그리고 '소프트웨어 공학용 수학', 'C 언매니지드 프로그래밍', '알고리듬 및 자료구조' 등 입문부터 전문 과정까지 있다. 이 중에서 친구가 추천해준 강의가 바로 ..
[Java] 가변인자로 받은 원소들은 어디로 향할까? (feat. Arrays.asList()로 리스트화 하기) 메서드를 사용하다 보면 '가변 인자'를 사용할 때가 있다. 가변 인자를 사용하면 해당 원소들은 어떻게 처리될까? 가변 인자 기능은 JDK1.5부터 사용이 가능해졌다. 그전까지는 메서드의 매개변수 개수가 고정적이었으나 해당 업데이트 이후부터 매개변수 개수를 "동적"으로 지정할 수 있게 된 것이다. 가변 인자는 '매개변수 타입... 변수명' 형식으로 선언한다. // 예시 String concatenate(String... str) {...} 가변인자의 기능 원리는, 가변 인자가 내부적으로 '배열'을 생성하고 매개변수에 들어온 원소들을 해당 배열에 배치한다. 아래 예제에서 변수명 args는 개발자가 입력한 매개변수들로 만들려는 배열의 이름과 동일하다. public String[] method1(String....
(22년 정기 3회) 정보처리기사 [필기] 합격 후기 및 공부 방법 - 자격명: 정보처리기사 - 국가기술자격 - 회차: 2022년 정기 기사 3회 [필기] - 시험 일시: 2022.07.10 - 시험 시간: 2시간 30분 (총 150분) - 시행기관: 한국산업인력공단 - 문제 유형: 객관식 100문제 (Part 1 : 20문제 | Part 2 : 20문제 | Part 3 : 20문제 | Part 4 : 20문제 | Part 5 : 20문제) - 검정비: 19,400원 정보처리기사, 그 자격증을 향하여 IT 업종에 일하기 위한 자격증을 찾아봤을 때 어김없이 등장하는 자격시험이 '정보처리기사'였다. 물론 효용성에 대한 찬반 의견은 첨예하게 갈렸다. 개발자로 일하고 있는 주변 지인들에게 물어봐도 A는 정보처리기사를 공부할 시간에 프로그래밍 역량을 쌓는 것이 더 좋다고 만류했고..
Ch.17 그래프로 뭐든지 연결하기 (도서 요약 "누구나 자료구조와 알고리즘") 친구를 맺어주는 소셜 네트워크를 만들어보자. 철수가 영희의 친구라면, 영희 역시 철수의 친구다. 이처럼 친구 관계는 서로 상호적이다. 이러한 데이터를 조직할 수 있는 간단한 방법은 '2차원 배열'로 리스트를 저장하는 것이다. String[][] friendShips = { {"Alice", "Bob"}, {"Bob", "Cynthia"}, {"Cynthia", "Diana"}, {"Diana", "Bob"}, {"Elise", "Fred"}, {"Fred", "Alice"} } 하지만 이 방식으로는 'Alice'의 친구가 누구인지 빠르게 알 수 없다. 컴퓨터는 목록 내 관계를 일일이 확인해야만 친구 관계를 알 수 있다. 이것은 O(N)이 걸리는 매우 느린 방법이다. '그래프(graph)'라는 자료 구조를..
Ch.16 트라이(trie)해 보는 것도 나쁘지 않다 (도서 요약 "누구나 자료구조와 알고리즘") 검색 자동완성 기능은 "catn"이라고 입력하면 자동으로 "catnip"이나 "catnap" 같은 단어를 추천해준다. 단어를 자동으로 완성하기 위해 스마트폰은 전체 단어 사전에 접근한다. 하지만 영단어를 전부 배열에 저장했다면, "catn"으로 시작하는 단어를 찾기 위해 모든 단어를 검색해야 한다. O(N)이라 비효율적이다. 해시 테이블도 단어를 통째로 해싱해야 값을 저장할 메모리 위치가 결정되니 도움이 안 된다. '정렬된 배열'에 단어를 저장하면 성능이 크게 개선된다. 배열에 단어가 알파벳순으로 들어 있으면 이진 검색으로 O(longN) 시간 안에 "catn"으로 시작하는 단어를 찾을 수 있다. 심지어 특수한 트리 기반 자료 구조를 사용하면 O(1)의 속도로 더 빨라질 수도 있다. '트라이'는 자동 완..
Ch.15 힙으로 우선순위 유지하기 (도서 요약 "누구나 자료구조와 알고리즘") 이진 탐색 트리 말고 다른 트리 종류도 많다. 모든 자료 구조가 그렇듯이 각 트리 종류마다 장단점이 있고 특정 상황에서 어떤 종류를 활용해야 할지 아는 것이 중요하다. 이번에는 특정 시나리오에 유리하게 활용할 수 있는 트리 자료 구조 중 하나인 '힙'을 알아본다. 힙은 데이터 세트에서 가장 큰 또는 가장 작은 데이터 원소를 계속 알아내야 할 때 굉장히 유용하다. 힙의 기능을 파악하기 위해선 '우선순위 큐'부터 살펴봐야 한다. 15. 1 우선순위 큐 지난번 배웠던 큐는 First In, First Out(FIFO) 방식으로 항목을 처리하는 리스트였다. 따라서 큐 끝에서만 데이터를 삽입하고 큐 앞에서만 접근과 삭제를 수행할 수 있다. 즉 데이터가 삽입됐던 순서에 접근 우선권이 있다. '우선순위 큐(prior..
Ch.14 이진 탐색 트리로 속도 향상 (도서 요약 "누구나 자료구조와 알고리즘") 데이터를 특정 순서대로 정렬하고 싶을 때 '퀵 정렬'을 사용할 수 있다. 하지만 정렬 알고리즘은 아무리 빨라도 O(NlogN) 시간이 걸린다. 따라서 데이터를 자주 정렬해야 한다면 다시 정렬하는 일이 없게 처음부터 데이터를 항상 정렬된 순서로 유지하는 편이 낫다. 정렬된 배열은 순서대로 데이터를 유지하는 효과적인 도구다. 또 특정 연산에 매우 빨라서 읽기에는 O(1), 검색(이진 검색을 사용할 때)에는 O(logN)이 걸린다. 그러나 정렬된 배열도 한계는 있다. 정렬된 배열은 삽입과 삭제가 상대적으로 느리다. 삽입과 삭제 시 값들을 전부 한 셀씩 오른쪽, 왼쪽으로 시프트 해야 하기 때문이다. 최악의 시나리오일 경우 N단계 걸리고, 평균적으로 N / 2단계가 걸린다. 전반적으로 빠른 속도를 내는 자료구조를..
Ch.13 노드 기반 자료 구조 (도서 요약 "누구나 자료구조와 알고리즘") 지금부터 다룰 자료 구조는 모두 '노드(node)'라는 개념에 기반해 만들어졌다. 노드란 컴퓨터 메모리 곳곳에 흩어져 있는 데이터 조각이다. 노드 기반 자료 구조는 데이터를 조직하고 접근하는 새로운 방법을 제공하기 때문에 성능상 이점이 많다. '연결 리스트'는 가장 기본적인 노드 기반 자료 구조이다. 배열과 거의 같아 보이지만, 연결 리스트는 효율성 면에서 장단점이 있다. 13. 1 연결 리스트 연결 리스트(linked list)는 배열과 마찬가지로 항목의 리스트를 표현하는 자료 구조다. 배열과 연결 리스트는 외견상 상당히 비슷해 보이지만, 내부적으로는 크게 다르다. 컴퓨터 메모리는 데이터 조각을 저장하는 셀들의 거대한 집합이다. 따라서 배열을 생성하면 메모리 내에 연속된 빈 셀 그룹을 찾아 데이터를 저..
Ch.12 속도를 높이는 재귀 알고리즘 (도서 요약 "누구나 자료구조와 알고리즘") 지금까지 버블 정렬, 선택 정렬, 삽입 정렬 같은 많은 정렬 알고리즘을 살펴봤다. 하지만 실제로 배열을 정렬할 때는 이러한 방법을 쓰지 않는다. 컴퓨터 언어 중 대다수가 내부적으로 채택한 정렬 알고리즘이 있는데 바로 '퀵 정렬(Quicksort)'이다. 퀵 정렬의 동작 방식을 공부하면 재귀를 사용해 어떻게 알고리즘의 속도를 크게 향상하는지 배울 수 있다. 퀵 정렬은 매우 빠른 정렬 알고리즘으로 특히 평균 시나리오에서 효율적이다. 최악의 시나리오(즉, 역순으로 정렬된 배열)에서는 삽입 정렬이나 선택 정렬과 성능이 유사하지만 대부분의 경우 일어나는 평균 시나리오에서는 훨씬 빠르다. 퀵 정렬은 '분할(partitioning)'이라는 개념에 기반하므로 분할을 먼저 알아보자. 12. 1 분할 배열을 분할(part..
Ch.11 재귀적으로 작성하는 법 (도서 요약 "누구나 자료구조와 알고리즘") 사실 재귀는 알고리즘의 시간 복잡도에 몹시 부정적인 영향을 미친다. 이번에는 재귀적으로 작성하는 다양한 카테고리를 살펴보자. 11. 1 재귀 카테고리: 반복 실행 가장 기본적인 카테고리는 '반복적'으로 수행하는 알고리즘이다. 예를 들어 앞에서 살펴본 반복적으로 실행되는 '카운트다운 알고리즘'이 그것이다. 코드는 10에서부터 9, 8, ... , 0까지의 수를 출력한다. 함수의 출력 횟수는 매번 다르나 코드의 본질은 결국 숫자 출력 작업을 반복적으로 실행하는 것이다. public void countdown(int number) { System.out.println("카운트 다운 " + number); if (number == 0) { return; } else { countdown(number - 1); ..
Ch.10 재귀를 사용한 재귀적 반복 (도서 요약 "누구나 자료구조와 알고리즘") 재귀(recursion)를 올바르게 사용하면 까다로운 문제 유형을 놀랍도록 간단하게 해결할 수 있다. public void recursion() { recursion(); } 위 메서드를 호출하면 자신을 반복적으로 호출하면서 무한대로 호출된다. 재귀는 함수가 자기 자신을 호출할 때를 뜻한다. 10. 1 루프 대신 재귀 만약 당신이 NASA에서 우주선 발사에 쓰일 카운트다운 메서드를 프로그래밍해야 한다면 어떻게 하겠는가? 10부터 0까지 숫자를 표시해야 하면 보통 '루프' 메서드를 사용할 것이다. public void countdown(int number) { for (int i = number; i >= 0 ; i--) { System.out.println("카운트 다운 " + i); } } 구현에는 문..
(제45회) SQLD 자격 검정 합격 후기 및 공부 방법 - 자격명: SQLD - 국가공인자격 - 회차: 제 45회 - 시험 일시: 2022.05.28 - 시험 시간: 1시간 30분 (총 90분) - 주관사: Kdata (한국데이터산업진흥원) - 문제 유형: 객관식 40문제 + 단답식 10문제 (총 50문제) - 검정비: 5만 원 무지한 상태에서 SQLD에 도전하기까지 나는 비전공자이다. 처음 SQL을 접했을 때는 22년 3월 10일쯤이었다. 아직 Java에 대해서도 잘 모르는 상태여서 모든 것이 막막한 상황에 놓여 있었다. 심리적인 불안감이 커져가던 때 마음에 두고 있던 부트캠프 모집 요건이 눈에 들어왔다. 코딩 테스트에 Java 문제가 있는 건 당연하다고 느꼈지만, 테스트 범위 중 등장한 SQL은 굉장히 생소했다. SQL....
[Java] '재귀 함수'를 사용해서 내부 객체를 탐색하기 (feat. 족보 구현) 여기 Human(사람) 클래스가 있다. public class Human { private String name; private String gender; private ArrayList subHumanList; public Human(String name, String gender) { this.name = name; this.gender = gender; subHumanList = new ArrayList(); } public void addHumanList(Human human) { subHumanList.add(human); } } 사람 한 명을 만들면, 그 사람은 '이름'과 '성별'을 가진다. 이름과 성별은 한 개의 값만 가지는 것이 자연스럽다. 그리고 그(또는 그녀)는 자식을 낳을 수 있다. ..
[8주 차 학습후기] Java&Spring boot로 시작하는 웹프로그래밍 (feat. 자바 인강) - 총 8주 과정 (22.03.23 ~ 22.05.18) - 총 33시간 과정 - 100% 온라인 진행 - Lv.2 (실전-심화) - 무료 (K-Digital training 지원) 8주 차 학습일지 (22.05.11 ~ 05.17) - (선택사항)웹 프로그래밍_추가제공2_스프링부트 CRUD (ch.16) - (선택사항)웹 프로그래밍_추가제공2_스프링부트 CRUD (ch.17) 드디어 마지막 주차까지 도달했다. 자바 관련 수업을 전부 수강했고, 남은 일주일 동안은 스프링부트 강의를 들었다. 해당 강의만으론 스프링부트을 이해하긴 힘들었던 것이 사실이다. 강의 초반에 강사가 안내했듯이 이론보단 실습 위주로 진행되었기 때문에 스프링부트의 작동 원리를 이해하는 데는 한계가 있었다. 이론적인 바탕이 있어야 습득이..
Ch.09 스택과 큐로 간결한 코드 생성 (도서 요약 "누구나 자료구조와 알고리즘") '스택'과 '큐'란 새로운 자료 구조는 "제약을 갖는 배열"로, 임시 데이터를 처리할 수 있는 간결한 도구다. 우리는 이것들을 임시 컨테이너로 사용해서 뛰어난 알고리즘을 만들 수 있다. 한 예로 손님이 주문한 내역은 식사를 준비하는 데까지만 중요하고, 이후는 버려진다. 해당 정보를 계속 가지고 있을 필요가 없으므로 임시 데이터란 다 쓴 후에는 버려도 된다. 스택과 큐는 이와 같은 임시 데이터를 처리하되 데이터를 처리하는 '순서'에 중점을 둔다. 9. 1 스택 '스택(stack)'이 데이터를 저장하는 방법은 배열과 같다. 단순히 원소들의 리스트다. 다만 3가지 제약이 있다. - 데이터는 스택의 끝에만 삽입할 수 있다. - 데이터는 스택의 끝에서만 삭제할 수 있다. - 스택의 마지막 원소만 읽을 수 있다. ..
[7주 차 학습후기] Java&Spring boot로 시작하는 웹프로그래밍 (feat. 자바 인강) - 총 8주 과정 (22.03.23 ~ 22.05.18) - 총 33시간 과정 - 100% 온라인 진행 - Lv.2 (실전-심화) - 무료 (K-Digital training 지원) 7주 차 학습일지 (22.05.04 ~ 05.10) - (선택사항)자바의 다양한 기능들-(12,23) - (선택사항)자바의 다양한 기능들-(24,25,26) 본격적으로 쓰레드스레드 공부를 했다. 자바를 공부하면서 스레드란 단어는 많이 보았지만 정확히 무엇인지 잘 몰랐는데 어떤 개념인지 알 수 있었다. 컴퓨터의 하드디스크에 있는 프로그램을 실행시키면 그 프로그램은 메모리에 올라가고, 이후 CPU를 차지해야 수행이 가능한데 그 단위를 thread라고 한다. 지금까지 짰던 짤막한 코드들은 모두 단일 스레드로 진행했다. 물론 강의를..
Ch.08 해시 테이블로 매우 빠른 룩업 (도서 요약 "누구나 자료구조와 알고리즘") 일반 배열에서 '선형 검색'을 할 때는 모든 원소들을 쭉 찾아야 하기 때문에 O(N) 단계가 걸린다. 만약 정렬이 되어있다면 '이진 검색'을 수행할 수 있어 O(logN)이 걸려 훨씬 빨라진다. 그러나 이보다 훨씬 더 좋아질 수 있다. '해시 테이블'을 이용하면 O(1) 만에 검색이 가능하다. 해시 테이블의 동작 방법, 사용처를 알면 많은 상황에서 해시 테이블의 엄청난 검색 속도를 활용할 수 있다. 8. 1 해시 테이블 대부분의 프로그래밍 언어는 '해시 테이블(hash table)'이라는 자료 구조를 포함하며, 빠른 검색 속도가 장점이다. 해시 테이블은 쌍으로 이뤄진 값들의 리스트다. 첫 번째 항목을 '키(key)'라 부르고, 두 번째 항목을 '값(value)'이라 부른다. 해시 테이블에서 키와 값은 서..
Ch.07 일상적인 코드 속 빅 오 (도서 요약 "누구나 자료구조와 알고리즘") 코드가 얼마나 빠른지 파악하는 것이 최적화의 첫 번째 단계이다. 더욱이 코드가 빅 오 표기법 관점에서 어떤 카테고리에 해당하는지 알면 최적화의 필요성을 판단할 수 있다. 7. 1 짝수의 평균 만약 수 배열을 받아 모든 짝수의 평균을 반환하는 메서드가 있다고 하자. public double averageOfEvenNumbers(int[] arr) { int sum = 0; int count = 0; for(int i=0; i
Ch.06 긍정적인 시나리오 최적화 (도서 요약 "누구나 자료구조와 알고리즘") 지금까지는 주로 최악의 시나리오에서 얼마나 많은 단계가 걸리는지에 초점을 맞췄지만, 최악의 시나리오 외에도 고려할 가치가 있는 상황들이 있다. 그래서 모든 시나리오를 고려할 수 있는 능력이 중요하다. 6. 1 삽입 정렬 버블 정렬과 선택 정렬 둘 다 효율성이 O(N²)이지만, 실제론 선택 정렬이 두 배 더 빠르다. '삽입 정렬(insertion sort)'은 또 다른 정렬 알고리즘이다. 삽입 정렬은 다음과 같은 단계를 따른다. (1) 첫 번째 패스스루에서 '임시로' 인덱스 1(두 번째 셀)의 값을 삭제하고, 이 값을 임시 변수에 저장한다. 이제 인덱스 1에 값이 없으므로 공백이 생긴다. (2) 공백 왼쪽에 있는 값을 임시 변수에 저장한 값과 비교한다. (3) 공백 왼쪽에 있는 값이 임시 변수에 있는 값보..
Ch.05 빅 오를 사용하거나 사용하지 않는 코드 최적화 (도서 요약 "누구나 자료구조와 알고리즘") 빅 오는 알고리즘을 서로 비교하는데 훌륭한 도구다. 하지만 빅 오 표기법에서는 한 알고리즘이 다른 알고리즘보다 훨씬 빠른 경우에도 두 알고리즘을 정확히 똑같은 방식으로 표현하기도 하는 한계가 있다. 따라서 효율성이 같아 보이는 두 알고리즘을 구별해 내서 더 빠른 알고리즘을 고르는 별도의 방법이 있다. 5. 1 선택 정렬 '선택 정렬(selection sort)'은 또 다른 정렬 알고리즘이다(앞에서 본 '버블 알고리즘'은 O(N²)이었다). 선택 정렬은 다음과 같은 단계를 따른다. (1) 배열의 각 셀을 왼쪽부터 오른쪽 방향으로 확인하면서 어떤 값이 최솟값인지 확인한다. (2) 한 셀씩 이동하면서 현재까지 가장 작은 값이 있는 인덱스를 변수에 저장한다. (3) 현재 최솟값보다 작은 값이 들어 있는 셀을 만..
[6주 차 학습후기] Java&Spring boot로 시작하는 웹프로그래밍 (feat. 자바 인강) - 총 8주 과정 (22.03.23 ~ 22.05.18) - 총 33시간 과정 - 100% 온라인 진행 - Lv.2 (실전-심화) - 무료 (K-Digital training 지원) 6주 차 학습일지 (22.04.27 ~ 05.03) - (선택사항)자바의 다양한 기능들-(13,14,15) - (선택사항)자바의 다양한 기능들-(16,17,18) - (선택사항)자바의 다양한 기능들-(19,20,21) 자바 입출력 스트림 파트로 넘어왔다. 여기서부턴 필기보다 실습 위주의 수업이 이뤄졌다. 솔직히 입출력 파트는 해당 영상만 봐선 이해가 잘 안 됐다. 이건 내가 자바의 정석 책을 보면서 천천히 내 것으로 만드는 노력이 필요할 듯하다. 클래스도 많고 메서드도 많아서 헷갈렸다. 암기보단 익숙해져야 할 것 같다. 아직..
Ch.04 빅 오로 코드 속도 올리기 (도서 요약 "누구나 자료구조와 알고리즘") 빅 오를 사용 하면 내가 만든 알고리즘과 세상에 존재하는 범용 알고리즘을 비교할 기회가 생기며, 제작한 알고리즘이 얼마나 빠른지 혹은 느린지 확인이 가능하다. 이번 파트에선 빅 오를 사용해서 작성한 알고리즘을 평가해본다. 그리고 효율성을 높이기 위한 알고리즘 수정 방법도 알아본다. 4. 1 버블 정렬 정렬 알고리즘은 컴퓨터 과학 분야에서 폭넓게 연구된 주제이며, 지난 수년간 수십 개의 정렬 알고리즘이 개발돼 왔다. 이러한 알고리즘은 모두 "정렬되지 않은 배열을 어떻게 오름차순으로 정렬할 수 있을까?"에 대한 문제를 해결한다. 가장 먼저 '단순 정렬(simple sort)'이라고 알려진 알고리즘 분류가 있다. 이것은 이후 배울 알고리즘보다 비효율적이다. 대표적으로 "버블 정렬(bubble sort)"가 있..
[완강 후기] 안랩샘 14기 '자바프로그래밍 입문' - 공부 기간 : 2022년 3월 19일 ~ 4월 23일 (주 1회, 총 5주 과정) - 강의 시간 : 총 20시간 - 플랫폼 : 맘잡고 - 100% 온라인 강의 선택 이유 당시의 나는 햇병아리 그 자체였다. 개발자가 되고 싶은데 무엇을, 얼마나 공부해야 할지 감조차 잡지 못했던 상황에서 욕심은 많았다. 오히려 모르니깐 장밋빛 미래를 상상할 수 있었다. 그러나 한편으로는 두려웠다. 지금 내가 공부한답시고 펼쳐 놓은 자바 책의 내용도 모두 공부하지 못한 상태인데, 여러 부트캠프 커리큘럼에 등장하는 수많은 IT 기술 용어들을 보면 한 걸음도 내딛지 못한 것 같아 너무 막막했다. 그래도 일단 'Java' 언어의 기본이 충실해야 한다는 생각은 바뀌지 않았다. 아직 이 언어가 어떻게 쓰이는지도 모르는 상태였지만,..
[5주 차 학습후기] Java&Spring boot로 시작하는 웹프로그래밍 (feat. 자바 인강) - 총 8주 과정 (22.03.23 ~ 22.05.18) - 총 33시간 과정 - 100% 온라인 진행 - Lv.2 (실전-심화) - 무료 (K-Digital training 지원) 5주 차 학습일지 (22.04.20 ~ 04.26) - (선택사항)자바의 다양한 기능들-(1,2,3) - (선택사항)자바의 다양한 기능들-(4,5,6) - (선택사항)자바의 다양한 기능들-(7,8,9) - (선택사항)자바의 다양한 기능들-(10,11,12) 정규(?) 코스를 끝낸 후 이번 주는 '선택사항' 과정에 들어갔다. 선택사항은 수료 기준에 들어가진 않지만 추가 학습을 제공한다. 선택사항에 포함된 수업은 자바와 관련된 기능들과 스프링 수업이 있다. 전 시간에 스프링 수업에 대한 실망이 커서 일단 자바 추가 학습만 진행하..
Ch.03 빅 오 표기법 (도서 요약 "누구나 자료구조와 알고리즘") 알고리즘의 효율성은 '알고리즘 수행에 필요한 단계 수'이다. 하지만 알고리즘에 필요한 단계 수는 하나로 정할 수가 없다. 선형 검색만 해도 배열의 원소 수만큼 단계가 필요하기 때문에 배열의 크기에 따라 필요한 단계 수가 다르다. 그래서 자료 구조와 알고리즘의 효율성을 간결하고 일관된 언어로 말하기 위해 형식화한 표현이 바로 '빅 오 표기법'이다. 3. 1 빅 오 : 원소가 N개일 때 몇 단계가 필요할까? 최악의 경우 선형 검색에는 배열의 원소 수만큼의 단계가 필요하다. 빅 오 표기법으로 표현하는 방식은 다음과 같다. O(N) 위 표기는 "데이터 원소가 N개일 때 알고리즘에 몇 단계가 필요한가" 질문에 대한 답을 나타낸다. 그 해답은 빅 오 표현의 괄호 안에 들어있는데, "알고리즘에 N단계가 필요하다"는 ..