728x90
https://www.acmicpc.net/problem/1764
n, m = map(int, input().split())
map = {}
for i in range(n+m):
name = input()
if name not in map: #1
map[name] = 1
else:
map[name] += 1
answer = []
for a, b in map.items(): #2
if b == 2:
answer.append(a)
print(len(answer))
print("\n".join(sorted(answer))) #3
#1 : 위의 for 문에서부터 n과 m으로 합쳐서 순번을 돌면 된다. 없으면 추가해서 1로 설정하고 또 나오면 +1 해주면 되니까
#2 : .items() 함수는 key와 value를 하나의 튜플로 묶어준다. a는 key b는 value가 된다.
#3 : 정렬된 리스트를 .join() 함수를 이용해 개행 문자로 연결해준다.
이것 말고 set()을 이용해서 푸는 방법이 찾아보니 더 많았다. 하지만 단계별로 풀어보기에서 맵 카테고리에 있는 문제였기에 그렇게 하지 않았다. 조만간 set() 함수 사용법도 공부해야겠다.
내가 고안한 다른 풀이)
import sys
n, m = map(int, sys.stdin.readline().split())
people, res = {}, []
for _ in range(n):
name = sys.stdin.readline().rstrip()
people[name] = False
for _ in range(m):
name2 = sys.stdin.readline().rstrip()
if name2 in people:
people[name2] = True
for key in people.keys():
if people[key] == True:
res.append(key)
res.sort()
print(len(res))
for name in res:
print(name)
True, False를 이용했다.
속도도 이전 풀이보다 조금 더 빨라졌다.
728x90
'[Coding Test] > [백준]' 카테고리의 다른 글
[백준] 11478 파이썬(python) : 서로 다른 부분 문자열의 개수 - (★) (0) | 2022.06.18 |
---|---|
[백준] 1269 파이썬(python) : 대칭 차집합 (0) | 2022.06.18 |
[백준] 1620 파이썬(python) : 나는야 포켓몬 마스터 이다솜 (0) | 2022.06.17 |
[백준] 14425 파이썬(python) : 문자열 집합 (0) | 2022.06.17 |
[백준] 9375 파이썬(python) : 패션왕 신해빈 - (★) (0) | 2022.06.17 |