728x90
듣보잡
시간 제한메모리 제한제출정답맞힌 사람정답 비율
2 초 | 256 MB | 83611 | 35478 | 27351 | 40.747% |
문제
김진영이 듣도 못한 사람의 명단과, 보도 못한 사람의 명단이 주어질 때, 듣도 보도 못한 사람의 명단을 구하는 프로그램을 작성하시오.
입력
첫째 줄에 듣도 못한 사람의 수 N, 보도 못한 사람의 수 M이 주어진다. 이어서 둘째 줄부터 N개의 줄에 걸쳐 듣도 못한 사람의 이름과, N+2째 줄부터 보도 못한 사람의 이름이 순서대로 주어진다. 이름은 띄어쓰기 없이 알파벳 소문자로만 이루어지며, 그 길이는 20 이하이다. N, M은 500,000 이하의 자연수이다.
듣도 못한 사람의 명단에는 중복되는 이름이 없으며, 보도 못한 사람의 명단도 마찬가지이다.
출력
듣보잡의 수와 그 명단을 사전순으로 출력한다.
예제 입력 1 복사
3 4
ohhenrie
charlie
baesangwook
obama
baesangwook
ohhenrie
clinton
예제 출력 1 복사
2
baesangwook
ohhenrie
처음 이 문제를 풀 때 리스트를 활용해서 푸려고 했다.
#1764 듣보잡
import sys
n,m = map(int,input().split())
listen = [sys.stdin.readline().rstrip() for i in range(n)]
see = [sys.stdin.readline().rstrip() for i in range(m)]
answer = [x for i in listen for x in see if i in x]
print(len(answer))
for i in answer:
print(i)
일단 리스트 컴프리핸션을 사용하여 푸려고 했지만 시간초과라고 한다...
찾아보니 리스트가 아닌 집합 set을 사용해야 했고, 집합의 특성은 중복 자료를 금지한다는 특성이 있다.
그리고 하나하나 비교하면서 찾아보려고 했지만 그 조차 집합에선 연산자 하나로 처리 할 수 있었다...
#1764 듣보잡
import sys
n,m = map(int,input().split())
i = set(sys.stdin.readline().rstrip() for i in range(n))
j = set(sys.stdin.readline().rstrip() for i in range(m))
x = sorted(set(i&j))
print(len(x))
for i in x:
print(i)
자료형에 대한 공부를 조금 더 해서 익숙해져야 할것 같다...
728x90
'Study > CodingTest' 카테고리의 다른 글
[백준/Python] (S4)11047 - 동전 0 (0) | 2023.07.08 |
---|---|
[백준/Python] (S4)11723 - 집합 (0) | 2023.07.08 |
[백준/Python] (S3)2108 - 통계학 (0) | 2023.06.22 |
[백준/Python] (S4)1676 - 팩토리얼 0의 갯수 (0) | 2023.06.20 |
[백준/Python] (S4)2164 - 카드2 (0) | 2023.06.20 |