알고리즘 문제/백준

백준 1764번: 듣보잡

수달과 다람쥐 2024. 5. 20. 11:49

본 포스팅은 문제의 풀이 보단 작성자의 개인적인 정리에 가깝습니다.
그냥 이 사람은 이렇게 풀었구나 정도로 봐주시면 감사하겠습니다

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

 

문제

김진영이 듣도 못한 사람의 명단과, 보도 못한 사람의 명단이 주어질 때, 듣도 보도 못한 사람의 명단을 구하는 프로그램을 작성하시오.

입력

첫째 줄에 듣도 못한 사람의 수 N, 보도 못한 사람의 수 M이 주어진다. 이어서 둘째 줄부터 N개의 줄에 걸쳐 듣도 못한 사람의 이름과, N+2째 줄부터 보도 못한 사람의 이름이 순서대로 주어진다. 이름은 띄어쓰기 없이 알파벳 소문자로만 이루어지며, 그 길이는 20 이하이다. N, M은 500,000 이하의 자연수이다.

듣도 못한 사람의 명단에는 중복되는 이름이 없으며, 보도 못한 사람의 명단도 마찬가지이다.

출력

듣보잡의 수와 그 명단을 사전순으로 출력한다.

예제 입력

3 4
ohhenrie
charlie
baesangwook
obama
baesangwook
ohhenrie
clinton

예제 출력

2
baesangwook
ohhenrie

풀이

import sys


def set_dic(dic,line):
    if(dic.get(line)==None):
        dic[line]=1
    else:
        dic[line]=2
    return dic
def get_list(dic):
    lis = []

    for i in dic.keys():
        if(dic[i]>=2):
            lis.append(i)

    return sorted(lis)
n, m = list(map(int,sys.stdin.readline().strip().split()))

dic = {}
for i in range(n):
    line = sys.stdin.readline().strip()
    dic = set_dic(dic,line)

for i in range(m):
    line = sys.stdin.readline().strip()
    dic = set_dic(dic,line)

lis=get_list(dic)
print(len(lis))
for i in lis:
    print(i)

 

답은 위와 같습니다

단순하게 딕셔너리를 선언하고 듣도 못한 놈일 경우 +1, 보도 못한 놈일 경우 +1

2이상인 경우를 듣보잡이라 판단해서 출력합니다

반응형

'알고리즘 문제 > 백준' 카테고리의 다른 글

백준 11399번: ATM  (0) 2024.05.20
백준 1104번: 동전 0  (0) 2024.05.20
백준 1620번: 나는야 포켓몬 마스터 이다솜  (3) 2024.05.20
백준 11723번: 집합  (0) 2024.05.20
백준 1003번: 피보나치 함수  (1) 2024.05.20