## 주제 자바로 배우는 자료구조 ## 목표 자료구조의 특성 이해 및 코드 구현화 능력 증진 ## 커리큘럼 1. 자료구조란? 2. 알고리즘 분석법 3. 배열 4. 연결 리스트 5. 스택 6. 큐 7. 트리 8. 그래프 9. 정렬 10. 검색 ## 대상 + 한 가지 이상의 프로그래밍 언어 경험자 ## 시간 및 장소 + 시간: 협의 + 장소: 스터디룸, 카페 etc. ## 신청방법 + 참가 신청 클릭 ## 연락처 + 이메일: sehongpark@cloudstudying.kr + 카톡: chaesam
# 자료 구조 시작하기 --- ## 발표준비 1. **프로그래밍**(programming)이란? 2. **알고리즘**(algorithm)이란? 3. **자료구조**(datastructure)란? 4. **시간 복잡도**(time complexity)란? 5. **공간 복잡도**(time complexity)란? ## 실습하기 1. 이진수와 십육진수 (https://cloudstudying.kr/challenges/150) 2. 주사위 통계 (https://cloudstudying.kr/challenges/168) 3. 랜덤 넘버 갯수 (https://cloudstudying.kr/challenges/210) 4. 배열 숫자 검색 (https://cloudstudying.kr/challenges/209) 5. 평균 구하기 (https://cloudstudying.kr/challenges/211) 6. 행렬의 곱 (https://cloudstudying.kr/challenges/228) ## 확인하기 - 이진 문자열을 정수로 만들려면? (https://cloudstudying.kr/questions/247) - 정수를 이진 문자열로 출력하려면? (https://cloudstudying.kr/questions/248) - 임의의 정수를 만들려면? (https://cloudstudying.kr/questions/263) ## 피드백 - 추가로 궁금한 점? - 아쉬운 점이 있다면? - 어떻게 개선하면 좋을까? - 좋았던 점 나누기!
# 자료 구조와 알고리즘 --- ## 발표준비 1. **자료구조**와 **알고리즘**의 관계? 2. **좋은 알고리즘**의 기준? 3. 알고리즘 **분석법**? 4. 빅오 표기법과 **성장률**(Growth rate)이란? ## 실습하기 1. 시간 복잡도 분석 (https://cloudstudying.kr/challenges/152) 2. 수행 시간 측정 (https://cloudstudying.kr/challenges/157) ## 확인하기 ## 피드백 - 추가로 궁금한점? - 아쉬운 부분이 있다면? - 어떻게 개선하면 좋을까? - 좋았던 점 나누기!
# 연습문제 - 자료구조와 알고리즘 --- ## 복습하기 - 프로그래밍, 알고리즘, 자료구조, 시간 복잡도, 공간 복잡도 - 좋은 알고리즘의 기준, 실험적 분석, 이론적 분석, 빅오 표기법, 성장률 ## 연습문제 ## 확인하기 ## 피드백 - 추가로 궁금한점? - 아쉬운 부분이 있다면? - 어떻게 개선하면 좋을까? - 좋았던 점 나누기!
# 배열 리스트(array list) --- ## 발표준비 1. 배열 리스트란? 2. 배열 리스트의 장점? 3. 배열 리스트의 단점? 4. 배열 리스트의 명세(specification)는? ## 실습하기 1. 배열 리스트 사용하기 (https://cloudstudying.kr/challenges/227) 2. 심플 배열 리스트: 추가하기 (https://cloudstudying.kr/challenges/256) 3. 심플 배열 리스트: 삽입하기 (https://cloudstudying.kr/challenges/221) 4. 심플 배열 리스트: 삭제하기 (https://cloudstudying.kr/challenges/222) ## 확인하기 ## 피드백 - 추가로 궁금한점? - 아쉬운 부분이 있다면? - 어떻게 개선하면 좋을까? - 좋았던 점 나누기!
# 연결 리스트(linked list) --- ## 발표준비 1. 연결 리스트란? 2. 연결 리스트의 장점? 3. 연결 리스트의 단점? 4. 연결 리스트의 종류? 5. 연결 리스트의 명세는? ## 실습하기 1. 첫 위치에 요소 추가: `addFirst()` - https://cloudstudying.kr/challenges/247 2. 특정 위치에 요소 추가: `add(pos, data)` - https://cloudstudying.kr/challenges/248 3. 특정 위치 요소 삭제: `remove(pos)` - https://cloudstudying.kr/challenges/249 ## 확인하기 ## 피드백 - 추가로 궁금한점? - 아쉬운 부분이 있다면? - 어떻게 개선하면 좋을까? - 좋았던 점 나누기!
# 연습문제 - 리스트(list) --- ## 복습하기 - 리스트, 배열 리스트, 배열 리스트의 장단점 - 연결 리스트, 연결 리스트의 장단점, 배열 리스트와 연결 리스트 비교 ## 연습문제 1. 랜덤 요소 접근 시간 (https://cloudstudying.kr/challenges/301) 2. 첫 요소 삭제 시간 (https://cloudstudying.kr/challenges/307) 3. 랜덤 요소 삭제 시간 (https://cloudstudying.kr/challenges/308) ## 확인하기 1. 랜덤 요소 접근 시, 연결 리스트가 느린 이유는? 2. 첫 요소 삭제 시, 배열 리스트가 느린 이유는? 3. 랜덤 요소 삭제 시, 무엇이 더 빠를까? ## 피드백 - 추가로 궁금한점? - 아쉬운 부분이 있다면? - 어떻게 개선하면 좋을까? - 좋았던 점 나누기!
# 스택 --- ## 발표준비 1. **스택**이란? 2. 스택의 **장점**? 3. 스택의 **구조**? 3. 스택의 **활용 예**? 4. 스택의 **명세서**(specification)? ## 실습하기 1. 스택 `push()` 구현 (https://cloudstudying.kr/challenges/264) 2. 스택 `pop()` & `peek()` 구현 (https://cloudstudying.kr/challenges/265) 3. 문자열 역순 출력하기 (https://cloudstudying.kr/challenges/147) 4. 괄호 쌍 검사하기 (https://cloudstudying.kr/challenges/148) 5. 중휘식을 후위식으로 (https://cloudstudying.kr/challenges/149) ## 확인하기 ## 피드백 - 추가로 궁금한점? - 아쉬운 부분이 있다면? - 어떻게 개선하면 좋을까? - 좋았던 점 나누기!
# 큐(queue) --- ## 발표준비 1. **큐**(queue)의 정의? 2. 큐의 **장점**? 3. 큐의 **구조** 4. 큐의 **사용 예**는? 5. 큐의 **명세서**는? ## 실습하기 1. 큐에 데이터 넣기 (https://cloudstudying.kr/challenges/267) 2. 큐에서 데이터 꺼내기 (https://cloudstudying.kr/challenges/269) 3. 원형 큐 만들기 (https://cloudstudying.kr/challenges/270) ## 확인하기 ## 피드백 - 추가로 궁금한점? - 아쉬운 부분이 있다면? - 어떻게 개선하면 좋을까? - 좋았던 점 나누기!
# 연습문제 - 스택과 큐 --- ## 복습하기 ## 연습문제 ## 확인하기 ## 피드백 - 추가로 궁금한점? - 아쉬운 부분이 있다면? - 어떻게 개선하면 좋을까? - 좋았던 점 나누기!
# 그래프(graph) --- ## 발표준비 ## 실습하기 ## 확인하기 ## 피드백 - 추가로 궁금한점? - 아쉬운 부분이 있다면? - 어떻게 개선하면 좋을까? - 좋았던 점 나누기!
# 연습문제 - 그래프 --- ## 복습하기 ## 연습문제 ## 확인하기 ## 피드백 - 추가로 궁금한점? - 아쉬운 부분이 있다면? - 어떻게 개선하면 좋을까? - 좋았던 점 나누기!
# 트리(tree) --- ## 발표준비 ## 실습하기 ## 확인하기 ## 피드백 - 추가로 궁금한점? - 아쉬운 부분이 있다면? - 어떻게 개선하면 좋을까? - 좋았던 점 나누기!
# 연습문제 - 트리 --- ## 복습하기 ## 연습문제 ## 확인하기 ## 피드백 - 추가로 궁금한점? - 아쉬운 부분이 있다면? - 어떻게 개선하면 좋을까? - 좋았던 점 나누기!
# 해시(hash) --- ## 발표준비 ## 실습하기 ## 확인하기 ## 피드백 - 추가로 궁금한점? - 아쉬운 부분이 있다면? - 어떻게 개선하면 좋을까? - 좋았던 점 나누기!
# 연습문제 - 해시 --- ## 복습하기 ## 연습문제 ## 확인하기 ## 피드백 - 추가로 궁금한점? - 아쉬운 부분이 있다면? - 어떻게 개선하면 좋을까? - 좋았던 점 나누기!