목록자료구조, 알고리즘 (13)
아보카도 Blog
오늘은 강의보다는 연습문제를 풀이하는데에 집중을 더 많이 했다. 그래도 배운 내용을 정리하면, 스택이랑 큐를 배운 다음 정렬을 배웠다. 스택은 LIFO로, 한쪽 끝으로만 자료를 넣고 뺄 수 있다. top에 데이터 넣을 때 push(), top에 데이터 추출하고 없애기는 pop(), top의 데이터 조회는 peek() 큐는 FIFO로, 한쪽 끝으로 자료를 넣고, 반대쪽에서는 자료를 뺄 수 있다. self.head와 self.tail로 구성되어 있다. rear에 데이터 넣을 때 enqueue(), front에 데이터 추출하고 없애기는 dequeue(), front에 데이터 조회는 peek() 아직 앞과 뒤, top과 rear가 헷갈린다... 오늘 배운 정렬은 버블정렬, 선택정렬, 삽입정렬. 각각의 코드는 다..

와 넘 어렵다! 특히나 숙제에서 배달 음식이 메뉴에 있는건지 이진탐색으로 확인하는 것과(전에 만든 폼을 활용) 숫자들을 +- 해서 원하는 목표값을 도달하는 경우의 수를 세는 것이 어려웠다. 그래도 첫번째 문제였던 끝에서 k번째 값 출력하기는 내 힘으로 풀었다. 나머지 두 문제도 스스로 해결할 수 있기를... 이번 주에 배운 내용들을 살펴보면, 1. 배열과 링크드리스트 배열과 링크드리스트를 호텔 방을 옮기는 일화와 기차 화물 칸을 옮기는 일화로 재미있게 풀어 배웠다. 정리하자면, 데이터에 접근이 빈번하다면 배열을, 삽입/삭제가 빈번하다면 링크드리스트를 사용하는 것이 효율적이다. 2. 클래스Class와 객체 Object, 생성자Constructor, 메소드 Method 사람이라는 클래스 안에 수정, 미희이라..
오늘 알고리즘 특강에서는 시간복잡도와 배열, 링크드리스트에 대해 배우고, 링크드리스트의 클래스, 데이터 추가, 원소 찾기, 원소 추가 실습을 해보았다. 1. 시간 복잡도 시간복잡도는 문제를 해결하는 데 걸리는 시간과 입력의 함수 관게로, 최악의 경우를 기준으로 O()값을 계산한다. 아래 함수들의 시간 복잡도를 비교해보자 #사례1 input = [3, 5, 6, 1, 2, 4] def find_max_num(array): for num in array: #배열의 길이만큼 연산이 실행된다.배열의 원소갯수 = N for compare_num in array: #배열의 길이만큼 연산이 실행된다.N if num < compare_num: #비교 연산이 1번 실행된다 break else: return num # 총..
오늘부터 3일간 내배캠에서 알고리즘 강의를 해준다. 우리 자료구조 알고리즘 강의에서 쓰는 강의노트를 기반으로 주석달아주신건데 처음에는 괜찮았지만 마지막에 코드를 직접 입력할 때 자바스크립트랑 파이썬이랑 헷갈렸고, 문자열 요약하기 문제에서는 알고리즘을 짜지 못했다 ㅠㅠ 그래도 실시간으로 시간을 정해놓고 코드를 직접 작성하고 피드백을 받을 수 있어서 좋았다. 오늘 배운 것과 느낀 점은 1. 파이썬으로 코딩하는 것에 익숙해지기 2. 기본 코딩 능력을 튼튼히 하기 (변수 선언, 출력, 반복문, 조건문 등) 3. 최댓값 for문 두 번 돌려서 푸는 방법 (실험군과 대조군) def find_max_num(array): for num in array: for compare_num in array: if num < c..
와우 처음에는 그냥 저냥 했는데 알고리즘이란 게 참 어렵구나 ㅎㅎ 많은 문제들을 풀면서 익숙해지는 수밖에 없다. 1주차에는 파이참으로 파일 관리하는 방법, 파일/폴더 이름짓기부터 시작해서 숫자열과 문자열을 처리하는 연습문제들을 풀어봤고 시간 복잡도와 공간 복잡도, 점근 표기법의 개념에 대해 알아보았다. 마지막에 푼 반복되지 않은 문자와 숙제 문자열 뒤집기가 어려웠다. 1. 알고리즘 알고리즘이란 어떤 문제가 있을 때, 그것을 해결하기 위한 여러 동작들의 모임을 말한다. 2. 최댓값 찾기 첫번째 방법: 각 숫자마다 모두 다른 숫자들과 비교한다. 여기에는 for문이 두 번이나 쓰였다. for문에서 괄호를 쓰지 않게 조심해야 하고 중간 중간마다 break나 continue를 써주기. 마지막에는 return 값까..