일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 데이터베이스
- 자바스크립트심화
- JDBC
- 개발일기
- rnn
- 파이썬
- 컴퓨터구조
- 딥러닝
- 혼공머신
- 연습문제
- 정보처리기사실기
- 중학수학
- 머신러닝
- JSP
- 자바 실습
- 자바스크립트
- ChatGPT
- SQL
- 중학1-1
- 정보처리기사필기
- 순환신경망
- CSS
- 상속
- html/css
- 자바
- c언어
- 데이터분석
- 컴퓨터비전
- 디버깅
- JSP/Servlet
- Today
- Total
클라이언트/ 서버/ 엔지니어 "게임 개발자"를 향한 매일의 공부일지
다양한 데이터 다루기 4 - 숫자에 이름 붙여서 사용하기 및 위상정렬로 과목의 순서 정하기 본문
이제 두 단원만 남아있다. 데이터 라이브러리에 대해 이어서 학습해 볼 것이다.
숫자에 이름을 붙여 사용하려면? - enum
enum은 서로 관련이 있는 여러 개의 상수 집합을 정의할 때 사용하는 모듈이다.
다음과 같이 날짜를 입력하면 그날의 요일에 해당하는 점심 메뉴를 반환하는 get_menu() 함수를 만들었다.
요일별로 출력이 되었다. 이 코드를 enum 라이브러리를 사용하여 쉬운 코드를 변경할 수 있다.
Week 클래스는 enum.IntEnum을 상속하여 만든 Enum 자료형이다. 이렇게 숫자를 바로 사용하지 않고 Enum 자료형을 만들어 상수로 사용하면 유지보수에 유리하며 가독성도 좋아진다.
Enum 자료형 활용
enum.Enum을 상삭하여 만든 Enum 자료형에는 다음처럼 name과 value 속성으로 접근할 수 있다.
for 문으로 이처럼 반복할 수 있다.
수강할 과목의 순서를 구하려면? - graphilib.TopologicalSorter
graphilib.TopologicalSorter는 위상 정렬에 사용하는 클래스이다.
위상 정렬이란?
위상정렬(toplogical sorting)은 유향 그래프의 꼭짓점을 변의 방향을 거스르지 않도록 나열하는 것을 의미한다. 위상 정렬을 가장 잘 설명해 줄 수 있는 예로는 대학의 선수 과목 구조를 들 수 있다. 특정 수강 과목에 선수 과목이 있다면 그 선수 과목부터 수강해야 하므로 특정 과목을 수강해야 할 때 위상 정렬을 통해 올바른 수강 순서를 찾아낼 수 있다. 이와 같이 선후 관계가 정의된 그래프 구조에서 선후 관계에 따라 정렬하고자 위상 정렬을 이용한다.
영어에 관심이 많은 A 학생은 5개의 영어 수업을 수강하고자 한다. 그런데 각 과목에는 선수 관목이 있어서 순서에 따라 수강해야 한다.
앞서 본 영어 수섭의 선수 과목을 나타낸 그림은 다음과 같다.
파이썬이 제공하는 graphlib의 TopologicalSorter를 사용하면 이 문제를 풀 수 있다.
add(노도, *선행노드) 함수는 특정 노드에 선행 노드를 추가할 때 사용하는 함수이다. 선행 노드는 1개 이상도 지정할 수 있다. 즉, 다음과 같이 사용해도 된다.
하지만 책과 달리 순환 오류가 발생하지는 않았다.
graphlib - 그래프와 유사한 구조에 작동하는 기능
학습을 마치고
이것으로 데이터를 다루는 라이브러리 학습을 마쳐본다. 생각했던 것보다 학습 분량이 많아서 2배는 더 걸릴 것 같다. 그래도 포기하지 않는다면 충분히 마칠 수 있을 거라 생각한다.
드디어 오늘의 첫번째 공부를 시작했다. 이제 수학과 숫자를 다루는 내용을 학습해 볼 것이다.
'프로그래밍 언어 > 파이썬' 카테고리의 다른 글
숫자와 숫자 다루기 2 - 분수 계산하기 및 무작위 난수 추출, 평균과 중앙값 구하기 (0) | 2024.10.06 |
---|---|
숫자와 숫자 다루기 1 - 최대공배수와 최소공배수 모듈 및 소수점 자릿수 표현하기 (0) | 2024.10.06 |
다양한 데이터 다루기 3 - 딕셔너리 초기화 및 데이터 출력에 대하여 (0) | 2024.10.05 |
다양한 데이터 다루기 2 - 자료형 넣고 빼기 및 이름 붙이기, 사용한 단어의 개수 구하기 (0) | 2024.10.05 |
다양한 데이터 다루기 1 - 날짜 계산하고 요일 알아내기 및 두 날짜의 차이, 윤년 판별하기 (0) | 2024.10.05 |