본문 바로가기
자료구조

[자료구조] Week 1: 자료구조 개요 및 배열

by cogito21_python 2024. 6. 1.
반응형

Day 1: 자료구조의 개요

  • 강의 내용:
    • 자료구조의 정의와 중요성
      • 자료구조의 개념
      • 자료구조가 필요한 이유
    • 자료구조의 종류
      • 선형 자료구조 vs 비선형 자료구조
      • 배열, 리스트, 스택, 큐, 트리, 그래프 등
  • 실습:
    • 다양한 자료구조의 예시와 활용 사례 설명
# 자료구조의 예시
# 리스트, 스택, 큐, 트리, 그래프 등 설명

# 리스트 예시
my_list = [1, 2, 3, 4, 5]
print("리스트:", my_list)

# 스택 예시 (리스트를 사용한 간단한 스택)
stack = []
stack.append(1)
stack.append(2)
stack.append(3)
print("스택:", stack)
stack.pop()
print("스택 (pop):", stack)

# 큐 예시 (리스트를 사용한 간단한 큐)
from collections import deque
queue = deque()
queue.append(1)
queue.append(2)
queue.append(3)
print("큐:", queue)
queue.popleft()
print("큐 (popleft):", queue)

 

Day 2: 배열의 기본 개념

  • 강의 내용:
    • 배열의 정의와 특징
      • 배열의 개념과 중요성
      • 배열의 크기와 인덱싱
    • 배열과 리스트의 차이
      • 배열과 파이썬 리스트의 비교
      • 파이썬 리스트의 유연성
  • 실습:
    • 기본 배열 예제 작성 및 배열의 특징 설명
# 파이썬 리스트를 사용한 배열 예제
arr = [10, 20, 30, 40, 50]
print("배열:", arr)

# 배열의 인덱싱
print("첫 번째 요소:", arr[0])
print("마지막 요소:", arr[-1])

# 배열의 크기
print("배열의 크기:", len(arr))

 

Day 3: 배열의 기본 연산

  • 강의 내용:
    • 배열의 기본 연산
      • 배열 요소의 추가, 삭제, 수정
    • 배열의 순회
      • 반복문을 사용한 배열 순회
  • 실습:
    • 배열의 기본 연산 예제 작성
# 배열 요소 추가
arr = [10, 20, 30]
arr.append(40)
print("요소 추가 후 배열:", arr)

# 배열 요소 삭제
arr.remove(20)
print("요소 삭제 후 배열:", arr)

# 배열 요소 수정
arr[1] = 50
print("요소 수정 후 배열:", arr)

# 배열 순회
print("배열 순회:")
for element in arr:
    print(element)

 

Day 4: 다차원 배열

  • 강의 내용:
    • 다차원 배열의 개념
      • 2차원 배열과 그 이상의 배열
    • 다차원 배열의 활용 예
      • 행렬 연산
  • 실습:
    • 2차원 배열 예제 작성 및 기본 연산
# 2차원 배열 예제
matrix = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
]

# 2차원 배열 요소 접근
print("2차원 배열의 첫 번째 행:", matrix[0])
print("2차원 배열의 첫 번째 요소:", matrix[0][0])

# 2차원 배열 순회
print("2차원 배열 순회:")
for row in matrix:
    for element in row:
        print(element, end=" ")
    print()

 

Day 5: 배열의 활용

  • 강의 내용:
    • 배열의 실제 활용 사례
      • 데이터 저장 및 접근
      • 간단한 알고리즘 구현
    • 배열을 사용한 간단한 알고리즘
      • 최대값, 최소값 찾기
      • 평균 계산
  • 실습:
    • 배열을 사용한 알고리즘 구현 예제 작성
# 배열에서 최대값, 최소값 찾기
arr = [10, 20, 30, 40, 50]
max_value = max(arr)
min_value = min(arr)
print("최대값:", max_value)
print("최소값:", min_value)

# 배열 요소의 평균 계산
average = sum(arr) / len(arr)
print("평균:", average)

 

Day 6: NumPy를 사용한 배열

  • 강의 내용:
    • NumPy 라이브러리 소개
      • NumPy의 개념과 장점
      • NumPy 배열의 특징
    • NumPy 배열 생성 및 기본 연산
      • NumPy 배열 생성
      • 기본 연산 수행
  • 실습:
    • NumPy 배열을 사용한 예제 작성
import numpy as np

# NumPy 배열 생성
np_arr = np.array([10, 20, 30, 40, 50])
print("NumPy 배열:", np_arr)

# NumPy 배열 기본 연산
print("NumPy 배열의 합:", np_arr.sum())
print("NumPy 배열의 평균:", np_arr.mean())
print("NumPy 배열의 최대값:", np_arr.max())
print("NumPy 배열의 최소값:", np_arr.min())

 

Day 7: 종합 연습 및 프로젝트

  • 강의 내용:
    • 배열을 사용한 종합 연습 문제 풀이
      • 다양한 배열 관련 문제
      • Q&A 세션
    • 미니 프로젝트
      • 배열을 활용한 간단한 프로그램 구현
      • 예: 학생 성적 관리 시스템
  • 실습:
    • 종합 연습 문제 풀기
    • 미니 프로젝트 작성 및 발표
# 연습 문제 1: 배열에서 중복 요소 제거
arr = [10, 20, 20, 30, 40, 50, 50]
unique_arr = list(set(arr))
print("중복 제거 후 배열:", unique_arr)

# 연습 문제 2: 2차원 배열의 전치 행렬 구하기
matrix = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
]
transpose = [[row[i] for row in matrix] for i in range(len(matrix[0]))]
print("전치 행렬:")
for row in transpose:
    print(row)

# 미니 프로젝트 예제: 학생 성적 관리 시스템
students = [
    {"name": "Alice", "score": 85},
    {"name": "Bob", "score": 78},
    {"name": "Charlie", "score": 92}
]

# 학생 평균 성적 계산
average_score = sum(student["score"] for student in students) / len(students)
print("학생 평균 성적:", average_score)

# 최고 성적 학생 찾기
top_student = max(students, key=lambda student: student["score"])
print("최고 성적 학생:", top_student["name"], top_student["score"])

 

이 강의는 파이썬의 자료구조 중 배열을 익히는 것을 목표로 하며, 각 강의는 이론과 실습을 포함합니다. 다음 주차에 대한 상세 강의를 원하시면 말씀해 주세요!

반응형