관리 메뉴

솜씨좋은장씨

[BaekJoon] 11235번 : Polling (Python) 본문

Programming/코딩 1일 1문제

[BaekJoon] 11235번 : Polling (Python)

솜씨좋은장씨 2022. 11. 8. 12:18
728x90
반응형

코딩 1일 1문제! 오늘의 문제는 백준의 Polling 입니다.

 

11235번: Polling

Output the name of the candidate with the most votes. If there is a tie, output out all of the names of candidates with the most votes, one per line, in alphabetical order. Do not output any spaces, and do not output blank lines between names.

www.acmicpc.net

🧑🏻‍💻 문제 풀이

중간선거 결과를 입력 받으면!

가장 많은 득표를 한 사람의 이름을 오름차순으로 정렬하여 출력하는 문제입니다.

def count_election_result(election_result):
    count_dict = {}
    
    for vote in election_result:
        if vote not in count_dict:
            count_dict[vote] = 0
            
        count_dict[vote] += 1
        
    return count_dict

먼저 이름을 카운트하는 함수를 하나 만들어주었습니다.

def get_max_vote_result(count_dict):
    items = sorted(count_dict.items(), key=lambda x: (-x[1], x[0]))
    
    max_vote_num = items[0][1]
    
    return [item[0] for item in items if max_vote_num == item[1]]

카운트하는 함수로 만든 카운트 정보를 담은 딕셔너리를 입력 받아

가장 많은 득표를 받은 사람을 구하는 함수를 만들었습니다.

items = sorted(count_dict.items(), key=lambda x: (-x[1], x[0]))

먼저 카운트 정보를 정렬합니다.

정렬기준은 카운트 수 내림차순, 이름 오름차순 입니다.

max_vote_num = items[0][1]

여기서 가장 첫번째 카운트 수를 꺼내면 가장 많이 받은 득표수 입니다.

[item[0] for item in items if max_vote_num == item[1]]

아이템 리스트에서 하나씩 꺼내면서 최대 득표수와 동일한 득표수를 받은 사람의 리스트를 구합니다.

def polling(midterm_election_result_list):
    count_dict = count_election_result(
        election_result=midterm_election_result_list
    )
    
    return get_max_vote_result(
        count_dict=count_dict
    )

위의 두 함수를 활용하여 이 문제의 솔루션 함수를 만들어줍니다.

def print_answer(answer):
    for ans in answer:
        print(ans)

솔루션 함수를 통해 나온 결과를 출력하는 함수를 만들어줍니다.

 

전체 코드는 아래를 참고해주세요.

🧑🏻‍💻 코드 ( Solution )

def count_election_result(election_result):
    count_dict = {}
    
    for vote in election_result:
        if vote not in count_dict:
            count_dict[vote] = 0
            
        count_dict[vote] += 1
        
    return count_dict


def get_max_vote_result(count_dict):
    items = sorted(count_dict.items(), key=lambda x: (-x[1], x[0]))
    
    max_vote_num = items[0][1]
    
    return [item[0] for item in items if max_vote_num == item[1]]


def polling(midterm_election_result_list):
    count_dict = count_election_result(
        election_result=midterm_election_result_list
    )
    
    return get_max_vote_result(
        count_dict=count_dict
    )


def print_answer(answer):
    for ans in answer:
        print(ans)
        
        
if __name__ == "__main__":
    election_result = []
    
    for _ in range(int(input())):
        name = input()
        election_result.append(name)
        
    answer = polling(
        midterm_election_result_list=election_result
    )
    
    print_answer(
        answer=answer
    )
 

GitHub - SOMJANG/CODINGTEST_PRACTICE: 1일 1문제 since 2020.02.07

1일 1문제 since 2020.02.07. Contribute to SOMJANG/CODINGTEST_PRACTICE development by creating an account on GitHub.

github.com

Comments