728x90
반응형
실습 설명
지하철 역 정보를 저장하고 있는 텍스트 파일 stations.txt를 사용할 건데요. 안에 데이터가 어떤 형식으로 저장돼 있는지 봅시다. stations.txt의 가장 위 줄을 가지고 올게요.
소요산 - 동두천 - 보산 - 동두천중앙 - 지행 - 덕정 - 덕계 - 양주 - 녹양 - 가능 - 의정부 - 회룡 - 망월사 - 도봉산 - 도봉 - 방학 - 창동 - 녹천 - 월계 - 성북 - 석계 - 신이문 - 외대앞 - 회기 - 청량리 - 제기동 - 신설동 - 동묘앞 - 동대문 - 종로5가 - 종로3가 - 종각 - 시청 - 서울역 - 남영 - 용산 - 노량진 - 대방 - 신길 - 영등포 - 신도림 - 구로 - 구일 - 개봉 - 오류동 - 온수 - 역곡 - 소사 - 부천 - 중동 - 송내 - 부개 - 부평 - 백운 - 동암 - 간석 - 주안 - 도화 - 제물포 - 도원 - 동인천 - 인천 - 광명 - 가산디지털단지 - 독산 - 금천구청 - 석수 - 관악 - 안양 - 명학 - 금정 - 군포 - 당정 - 의왕 - 성균관대 - 화서 - 수원 - 세류 - 병점 - 세마 - 오산대 - 오산 - 진위 - 송탄 - 서정리 - 지제 - 평택 - 성환 - 직산 - 두정 - 천안 - 봉명 - 쌍용 - 아산 - 배방 - 온양온천 - 신창 - 서동탄
이 줄이 너무 길어서 줄바꿈이 있는 거처럼 보이실 수도 있는데요. 이게 다 한 줄입니다. 내용을 살펴보면 서울 지하철 1호선 노선 데이터가 있죠? 소요산역부터 서동탄역까지 순서대로 저장돼 있고, "-"로 구별돼 있습니다.
stations.txt 파일의 각 줄은 하나의 지하철 노선의 데이터를 저장하고 있습니다. 이번 과제에서는 이 텍스트 파일의 바탕으로 서울 지하철역 노드들을 만들어 볼게요.
실습 결과
class StationNode:
"""간단한 지하철 역 노드 클래스"""
def __init__(self, station_name):
self.station_name = station_name
def create_station_nodes(input_file):
"""input_file에서 데이터를 읽어 와서 지하철 그래프 노드들을 리턴하는 함수"""
stations = {} # 지하철 역 노드들을 담을 딕셔너리
# 파라미터로 받은 input_file 파일을 연다
with open(input_file) as stations_raw_file:
for line in stations_raw_file: # 파일을 한 줄씩 받아온다
subway_line = line.strip().split("-") # 앞 뒤 띄어쓰기를 없애고 "-"를 기준점으로 데이터를 나눈다
for name in subway_line:
station_name = name.strip() # 앞 뒤 띄어쓰기 없애기
# 여기에 코드를 작성하세요
if station_name not in stations:
cur_station = StationNode(station_name)
stations[station_name] = cur_station
return stations
stations = create_station_nodes("./stations.txt") # stations.txt 파일로 그래프 노드들을 만든다
# 테스트 코드
# stations에 저장한 역들 이름 출력 (채점을 위해 역 이름 순서대로 출력)
for station in sorted(stations.keys()):
print(stations[station].station_name)
가능
가락시장
가산디지털단지
가양
가좌
가평
간석
간석오거리
갈매
갈산
강남
강남구청
강동
강동구청
강변
강촌
개롱
개봉
개포동
개화
(중략)
728x90
반응형
'자료구조' 카테고리의 다른 글
[파이썬] 더블리 링크드 리스트 삭제 구현 (0) | 2023.12.10 |
---|---|
[파이썬] 더블리 링크드리스트 삽입 구현 (0) | 2023.12.10 |
[파이썬] 링크드리스트 가장 앞 삭제 (0) | 2023.12.10 |
[파이썬] prepend : 링크드리스트 가장 앞에 삽입하기 (0) | 2023.12.10 |
[파이썬] 링크드 리스트 삽입 연산 (0) | 2023.12.10 |