■ ➍ 전국의 모든 지역에 대해 반복하며 그 차이가 가장 작은 지역을 찾는다.
이제 그동안 많이 해왔던 최솟값을 찾는 패턴의 문제입니다. 앞에서 많이 다뤄본 패턴이기 때문에 코드를 보면 이해하기 어렵지 않을 거예요.
import numpy as np import csv f = open('age.csv') data = csv.reader(f) next(data) data = list(data) name = input('인구 구조가 알고 싶은 지역의 이름(읍면동 단위)을 입력해주세요 : ') mn = 1 # 최솟값을 저장할 변수 생성 및 초기화 result_name = '' # 최솟값을 갖는 지역의 이름을 저장할 변수 생성 및 초기화 result = 0 # 최솟값을 갖는 지역의 연령대별 인구 비율을 저장할 배열 생성 및 초기화 for row in data : if name in row[0] : home = np.array(row[3:], dtype=int)/int(row[2]) # ➊ for row in data : # ➏ away = np.array(row[3:], dtype=int)/int(row[2]) # ➋ s = np.sum(home-away) # ➌ if s < mn : # ➍ mn = s # ➎ result_name = row[0] result = away
사용자로부터 입력받은 지역의 인구 비율을 home에 저장합니다(➊). 그런 다음 다른 지역의 인구 비율을 away에 저장한 후(➋) home에 저장된 값과 away에 저장된 값의 차이의 합을 계산합니다(➌). if 조건문 안에서는 위에서 계산한 합이 최솟값인지 확인합니다(➍). 만약 최솟값이라면 변수 mn의 값을 갱신하고(➎), 최솟값을 갖는 지역의 이름과 해당 지역의 연령대별 인구 비율 값을 저장합니다. 이 과정은 전체 데이터에 대해 반복합니다(➏).
코드를 실행하니 에러가 발생하지 않는 것으로 보아 가장 비슷한 인구 구조를 가진 지역을 찾은 것 같습니다.