문제
김진영이 듣도 못한 사람의 명단과, 보도 못한 사람의 명단이 주어질 때, 듣도 보도 못한 사람의 명단을 구하는 프로그램을 작성하시오.
입력
첫째 줄에 듣도 못한 사람의 수 N, 보도 못한 사람의 수 M이 주어진다. 이어서 둘째 줄부터 N개의 줄에 걸쳐 듣도 못한 사람의 이름과, N+2째 줄부터 보도 못한 사람의 이름이 순서대로 주어진다. 이름은 띄어쓰기 없이 알파벳 소문자로만 이루어지며, 그 길이는 20 이하이다. N, M은 500,000 이하의 자연수이다.
듣도 못한 사람의 명단에는 중복되는 이름이 없으며, 보도 못한 사람의 명단도 마찬가지이다.
출력
듣보잡의 수와 그 명단을 사전순으로 출력한다.
예제 입력 1 복사
3 4
ohhenrie
charlie
baesangwook
obama
baesangwook
ohhenrie
clinton
예제 출력 1 복사
2
baesangwook
ohhenrie
문제 요약
두번쨰 리스트 각 요소가 첫 번째 리스트에 포함되어있는지 확인 후
갯수와 그 리스트 사전순서로 출력
접근 방법
동일한 것을 찾은 후 동일하면 리스트에 추가
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
N, M = map(int, input().split())
n_list = set()
for i in range(N):
n_list.add(input())
result = []
cnt = 0
for i in range(M):
temp = input()
if temp in n_list:
cnt+=1
result.append(temp)
result.sort()
print(cnt)
for i in result:
print(i)
|
sort를 안하더라도 직접 추가도 가능
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
N, M = map(int, input().split())
n_list = set()
for i in range(N):
n_list.add(input())
result = []
cnt = 0
def add(temp):
for i in range(len(result)):
if result[i] > temp:
result.insert(i, temp)
return
result.append(temp)
return
for i in range(M):
temp = input()
if temp in n_list:
cnt+=1
add(temp)
print(cnt)
for i in result:
print(i)
|
'알고리즘 문제 > 백준' 카테고리의 다른 글
알고리즘 - 집합과 맵(11478 서로 다른 부분 문자열의 개수) (0) | 2022.08.06 |
---|---|
알고리즘 - 집합과 맵(1269 대칭 차집합) (0) | 2022.08.06 |
알고리즘 - 집합과 맵(10816 숫자 카드2) (0) | 2022.08.06 |
알고리즘 - 집합과 맵 ( 1620 나는야 포켓몬 마스터 이다솜 ) (0) | 2022.08.06 |
알고리즘 - 집합과 맵(14425 문자열 집합) (0) | 2022.08.06 |