품생품사(品生品死)

소프트웨어 품질에 살고 품질에 죽는 그런 평범한 일상 블로그

TESTING/PROGREMING

[파이썬 코딩 - Chap.19] 실습 조금 생각하는 투표 집계 문제 풀어보기

품생품사(品生品死) 2020. 11. 25. 06:43
반응형

파이썬 예제 : 투표 집계 하기

투표 후 집계하는 상황을 가정하여 코딩을 해봅시다.

문제가 살짝 어려울 수 있으니 힌트를 참고하여 풀어 보시기 바랍니다.

전 개인적으로 어려웠습니다.

 

문제

효신이는 매년 국회의원 선거 때마다, 성북구에서 집계 도우미 봉사를 하는데요.

작년까지는 표를 손수 세다가, 올해부터는 IT 시대에 더 적합한 솔루션을 개발하려고 합니다.

 

파이썬 리스트 votes에는 성북구민들의 투표 결과가 저장되어 있습니다.

리스트 votes의 정보를 토대로, 사전 vote_counter에 후보별 득표수를 정리하는 것이 목표입니다.

 

예를 들어서 votes가 ['허유나', '서혜선', '허유나']라고 가정하면, vote_counter는 {'허유나': 2, '서혜선': 1}이 되어야 하는 거죠.

 

출력 예시

# 투표 결과 리스트
votes = ['김영자', '강승기', '최만수', '김영자', '강승기', '강승기', '최만수', '김영자', \
'최만수', '김영자', '최만수', '김영자', '김영자', '최만수', '최만수', '최만수', '강승기', \
'강승기', '김영자', '김영자', '최만수', '김영자', '김영자', '강승기', '김영자']

# 후보별 득표수 사전
vote_counter = {}

# 리스트 votes를 이용해서 사전 vote_counter를 정리하기
for name in votes:
    # 코드를 작성하세요.

# 후보별 득표수 출력
print(vote_counter)


{'김영자': 11, '강승기': 6, '최만수': 8}

 

힌트

1. for문을 이용해서 votes에 있는 후보 이름을 순서대로 name이라는 변수에 지정합니다.

name을 vote_counter 사전에 반영하면 되는데요. 두 가지 경우가 있습니다.

  • 해당 후보(name)가 아직 vote_counter에 없는 케이스
  • 해당 후보(name)가 이미 vote_counter에 있는 케이스

2. 힌트 1의 두 케이스를 각각 봅시다.

1번 케이스는 해당 후보가 첫 득표를 한 상황인데요. 그러면 그냥 vote_counter[name] = 1을 하면 되겠죠?

2번 케이스는 해당 후보가 이미 최소 하나의 득표를 한 상황입니다. 이 경우 기존 득표 수에 1을 늘려 주면 되는데요.

그러면 vote_counter[name] += 1을 하면 됩니다.

 

정답

# 투표 결과 리스트
votes = ['김영자', '강승기', '최만수', '김영자', '강승기', '강승기', '최만수', '김영자', \
'최만수', '김영자', '최만수', '김영자', '김영자', '최만수', '최만수', '최만수', '강승기', \
'강승기', '김영자', '김영자', '최만수', '김영자', '김영자', '강승기', '김영자']

# 후보별 득표수 사전
vote_counter = {}

# 리스트 votes를 이용해서 사전 vote_counter를 정리하기
for name in votes:
    if name not in vote_counter:
        vote_counter[name] = 1
    else:
        vote_counter[name] += 1

# 후보별 득표수 출력
print(vote_counter)

 

해설

for문을 이용해서 votes에 있는 후보 이름을 순서대로 name이라는 변수에 지정합니다.

name을 vote_counter 사전에 반영하면 되는데요. 두 가지 경우가 있습니다.

  1. 해당 후보(name)가 아직 vote_counter에 없는 케이스
  2. 해당 후보(name)가 이미 vote_counter에 있는 케이스

1번 케이스는 해당 후보가 첫 득표를 한 상황인데요.

그러면 그냥 vote_counter[name] = 1을 하면 되겠죠?

 

2번 케이스는 해당 후보가 이미 최소 하나의 득표를 한 상황입니다.

이 경우 기존 득표 수에 1을 늘려 주면 되는데요. 그러면 vote_counter[name] += 1을 하면 됩니다.

 

Related References

 

코딩이 처음이라면, 코드잇

월 3만원대로 Python, JavaScript, HTML/CSS, Java 등 1,600개 이상 프로그래밍 강의를 무제한 수강하세요

www.codeit.kr:443

This is coding_000
PYTHON 프로그래핑

요약 : sparta coding club, 스파르타 코딩, 코드잇, 노마드 코더, 프로그래밍, 직장인 코딩, 내일 배움 카드 코딩, 밀크티 코딩, 초등 코딩, 아이스크림 코딩, 코딩 소프트웨어, 파이썬 국비 지원, 파이썬 교육

728x90
반응형