문제풀이/백준(Boj) 문제풀이

[백준][파이썬] - 1764. 듣보잡(파이썬/python)

얄루몬 2022. 7. 20. 17:28

풀이 1

n, m = map(int,input().split())

d= {}

for i in range(n):
    name = input()
    d[name] = 1

for i in range(m):
    name = input()
    if name not in d:
        d[name] = 1
    else:
        d[name] = d[name] +1

res = []
 
for dic in d:
    if d[dic] == 2:
        res.append(dic)
res.sort()

print(len(res))
for r in res:
    print(r)
  • 듣도 못한 사람을 키로 값을 1로 만들어 체크해준다.
  • 보도 못한 사람 중 듣도 못한 사람과 겹치면 해당 값에 +1 해준다. 
  • 이때 값이 2인 키들만 res 리스트에 담아주고 이를 오름차순으로 출력하기 위해서 정렬해준다.

풀이 2

n, m = map(int,input().split())

d= {}
res = []

for i in range(n):
    name = input()
    d[name] = 1

for i in range(m):
    name = input()
    if name in d:
        res.append(name)
res.sort()
print(len(res))
for r in res:
    print(r)
  • 두 리스트를 다 돌 필요 없이 첫 번째 듣도 못한 사람 리스트에서 체크된 경우만 res 리스트에 담아서 이를 정렬한 뒤 길이를 출력하고 해당 이름을 출력해준다.