본문 바로가기
코딩 테스트 수련의방

백준 #1764

by L3m0n S0ju 2022. 3. 10.

듣보잡 성공

 
시간 제한메모리 제한제출정답맞힌 사람정답 비율
2 초 256 MB 40456 16792 12442 40.090%

문제

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

입력

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

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

출력

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

예제 입력 1 복사

3 4
ohhenrie
charlie
baesangwook
obama
baesangwook
ohhenrie
clinton

예제 출력 1 복사

2
baesangwook
ohhenrie

출처

  • 문제를 만든 사람: author5

 

 

 

 

 

 


import sys

if __name__ == '__main__':

    N, M = list(map(int, sys.stdin.readline().split()))
    N_set = set()
    M_set = set()

    for i in range(N):
        word = sys.stdin.readline().strip()
        N_set.add(word)

    for i in range(M):
        word = sys.stdin.readline().strip()
        M_set.add(word)

    dup = N_set & M_set
    print(len(dup))

    for i in sorted(dup):
        print(i)

 

파이썬에서 집합을 처음 사용해보았다. 교집합 차집합 같은 개념을 사용해야할 때 유용하게 사용할 수 있을 것 같다.

 

 

 

 

 

 

 

 

 

 


import sys

if __name__ == '__main__':

    N, M = list(map(int, sys.stdin.readline().split()))
    lst = []
    dup = []

    for i in range(N):
        word = sys.stdin.readline().strip()
        lst.append(word)

    for i in range(M):
        word = sys.stdin.readline().strip()
        if word in lst:
            dup.append(word)

    print(len(dup))

    for i in sorted(dup):
        print(i)

집합을 사용안하고 리스트로도 풀어봤다. 

'코딩 테스트 수련의방' 카테고리의 다른 글

백준 #1316  (0) 2022.03.12
백준 #4949  (0) 2022.03.10
백준 #9012  (0) 2022.03.10
백준 #11726  (0) 2022.03.09
백준 #9095  (0) 2022.03.09

댓글