ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [백준] 16165번 걸그룹 마스터 준석이
    Algorithm Study/Python 2024. 11. 11. 23:03

    https://www.acmicpc.net/problem/16165

    풀이

    이번에도 dictionary 연습을 위한 문제이다.

    먼저  걸그룹의 수 N, 맞혀야할 문제의 수 M을 입력 받은 다음
    걸그룹, 걸그룹의 멤버 이름을 입력받아 저장한다. 그 뒤 걸그룹 또는 멤버의 이름을 받아 필요한 내용을 출력하는 문제다.

     

    N, M = map(int, input().split())
    
    girls = dict()

    먼저 N, M을 입력받고 걸그룹을 저장하기 위한 dictionary를 생성한다.

     

    for _ in range(N):
        temp = input()
        girls[temp] = []
        K = int(input())
        for _ in range(K):
            girls[temp].append(input())
        girls[temp].sort()

    걸그룹에 대한 정보를 dictionary에 저장하기 위해 제일 처음 그룹이 나왔을 때는 list로 된 dictionary를 생성하고
    그 뒤 멤버를 추가한다.

    마지막 출력을 위해 미리 정렬했다.

     

    for _ in range(M):
        name = input()
        quiz = int(input())
    
        if quiz == 0:
            for i in girls[name]:
                print(i)
    
        elif quiz == 1:
            for i in girls.keys():
                if name in girls[i]:
                    print(i)

     다음 이름과 퀴즈 정보를 받았다. 
    퀴즈가 0인 경우는 걸그룹의 이름을 받아 멤버를 출력하는 것이고 
    퀴즈가 1인 경우는 멤버 이름을 받아 해당하는 걸그룹을 출력하는 것이다.

    0인 경우에 걸그룹의 이름은 key로 동작하기 때문에 앞서 정렬한 값을 바로 출력하면 된다.

    1인 경우에는 해당하는 멤버를 찾기 위해서 모든 key를 탐색하며 value에 멤버 이름을 갖고 있는 key값을 찾아야한다.
    걸그룹 인원의 최대 숫자가 나와있지 않아서 탐색에 걸리는 최대 시간은 계산할 수 없었지만 list의 순차 탐색으로도 정답이 나와 해당 방법으로 구현했다.

    만약 걸그룹 인원 숫자가 훨씬 많아 순차 탐색으로 구현할 수 없다면 list가 아닌 set으로 구현한 뒤 마지막 출력 부분에서 list로 변환 후 정렬이 필요할 것 같다.

     

    전체 코드

    N, M = map(int, input().split())
    
    girls = dict()
    
    for _ in range(N):
        temp = input()
        girls[temp] = []
        K = int(input())
        for _ in range(K):
            girls[temp].append(input())
        girls[temp].sort()
    
    for _ in range(M):
        name = input()
        quiz = int(input())
    
        if quiz == 0:
            for i in girls[name]:
                print(i)
    
        elif quiz == 1:
            for i in girls.keys():
                if name in girls[i]:
                    print(i)

     

    'Algorithm Study > Python' 카테고리의 다른 글

    [백준] 0000번 XXXX (수정용)  (0) 2024.11.21
    [백준] 1157 단어 공부  (0) 2024.11.13
    [백준] 7785번 회사에 있는 사람  (0) 2024.11.10
    [백준] 10431번 줄세우기  (0) 2024.07.17
    [백준] 1009번 설탕 배달  (0) 2024.07.11

    댓글

From BlackHair