더북(TheBook)

전국의 모든 지역에 대해 반복하며 그 차이가 가장 작은 지역을 찾는다.

이제 그동안 많이 해왔던 최솟값을 찾는 패턴의 문제입니다. 앞에서 많이 다뤄본 패턴이기 때문에 코드를 보면 이해하기 어렵지 않을 거예요.

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의 값을 갱신하고(), 최솟값을 갖는 지역의 이름과 해당 지역의 연령대별 인구 비율 값을 저장합니다. 이 과정은 전체 데이터에 대해 반복합니다().

코드를 실행하니 에러가 발생하지 않는 것으로 보아 가장 비슷한 인구 구조를 가진 지역을 찾은 것 같습니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.