파이썬 예제 : 투표 집계 하기
투표 후 집계하는 상황을 가정하여 코딩을 해봅시다.
문제가 살짝 어려울 수 있으니 힌트를 참고하여 풀어 보시기 바랍니다.
전 개인적으로 어려웠습니다.
문제
효신이는 매년 국회의원 선거 때마다, 성북구에서 집계 도우미 봉사를 하는데요.
작년까지는 표를 손수 세다가, 올해부터는 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 사전에 반영하면 되는데요. 두 가지 경우가 있습니다.
- 해당 후보(name)가 아직 vote_counter에 없는 케이스
- 해당 후보(name)가 이미 vote_counter에 있는 케이스
1번 케이스는 해당 후보가 첫 득표를 한 상황인데요.
그러면 그냥 vote_counter[name] = 1을 하면 되겠죠?
2번 케이스는 해당 후보가 이미 최소 하나의 득표를 한 상황입니다.
이 경우 기존 득표 수에 1을 늘려 주면 되는데요. 그러면 vote_counter[name] += 1을 하면 됩니다.
Related References
요약 : sparta coding club, 스파르타 코딩, 코드잇, 노마드 코더, 프로그래밍, 직장인 코딩, 내일 배움 카드 코딩, 밀크티 코딩, 초등 코딩, 아이스크림 코딩, 코딩 소프트웨어, 파이썬 국비 지원, 파이썬 교육
'TESTING > PROGREMING' 카테고리의 다른 글
[파이썬 코딩 - Chap.21] 실습 조금 생각하는 숫자 맞히기 게임 문제 풀어보기 (0) | 2020.11.27 |
---|---|
[파이썬 코딩 - Chap.20] 실습 조금 생각하는 주민등록번호 가리기 문제 풀어보기 (0) | 2020.11.26 |
[파이썬 코딩 - Chap.18] 실습 조금 생각하는 영어 단어장 문제 풀어보기 (0) | 2020.11.25 |
[파이썬 코딩 - Chap.17] 실습 조금 생각하는 피타고라스 정의 문제 풀어보기 (0) | 2020.11.24 |
[파이썬 코딩 - 정보] 리스트 코딩 시 꼭 알아두면 좋은 6가지 팁 (0) | 2020.11.24 |