문제
김진영이 듣도 못한 사람의 명단과, 보도 못한 사람의 명단이 주어질 때, 듣도 보도 못한 사람의 명단을 구하는 프로그램을 작성하시오.
입력
첫째 줄에 듣도 못한 사람의 수 N, 보도 못한 사람의 수 M이 주어진다. 이어서 둘째 줄부터 N개의 줄에 걸쳐 듣도 못한 사람의 이름과, N+2째 줄부터 보도 못한 사람의 이름이 순서대로 주어진다. 이름은 띄어쓰기 없이 알파벳 소문자로만 이루어지며, 그 길이는 20 이하이다. N, M은 500,000 이하의 자연수이다.
듣도 못한 사람의 명단에는 중복되는 이름이 없으며, 보도 못한 사람의 명단도 마찬가지이다.
출력
듣보잡의 수와 그 명단을 사전순으로 출력한다.
시사점
1. 겹치는 듣보잡의 수를 p라고 두었을 때,
2. 명단을 출력하는 프로그램
문제를 보자마자 든 생각은, test 값을 두개 받아야 한다는 것.
그리고 그것과는 별개로 새로운 집합과 그에대한 각각의 for문의 필요성이다.
이를 기반으로 코드를 작성해보자
test1, test2 = map (int,(input().split()))
a=set()
for i in range(test1):
a.add(input())
b=set()
for i in range(test2):
b.add(input())
result=sorted(list(a&b))
print(len(result))
for i in result:
print(i)
test1, test2 = map (int,input().split())
test1과 test2로 각각의 보지도 못한 사람과 듣지도 못한 사람의 수를 받아낸다.
a=set()
그리고 a라는 집합을 만들어준다. 이는 b와도 동일하다.
왜 굳이 집합이냐 묻느냐면, 집합은 중복값이 존재치 않기 때문이다.
for i in range(test1):
a.add(input())
test횟수만큼 for문을 돌려준다.
어떤 for문? 입력값을 집합 a에 넣어준다는 문장을.
이는 b에서도 동일하게 반복한다.
result=sorted(list(a&b))
입력받은 a와 b의 집합을 &함수로 교집합을 구한 후 리스트로 변환하여
sorted (정렬) 해준다. 그리고 그 값을 result에 넣어준다.
print(len(result))
이후 result 의 길이 만큼 프린트 해주고
for i in result:
print(i)
리스트인 result 의 [i] 번째부터 출력해주는 for문을 돌려주면서 그 리스트의 원소들을 보여주면 끝이난다.
'ALGORITHM' 카테고리의 다른 글
알고리즘 스터디, 03: 백준 9012, 괄호 [PYTHON][파이썬] (0) | 2022.09.29 |
---|---|
알고리즘 스터디, 03: 백준 1475번, 방 번호 [PYTHON][파이썬] (0) | 2022.09.28 |
알고리즘 스터디, 02: 백준 2675번, 문자열 반복 [PYTHON][파이썬] (0) | 2022.09.26 |
알고리즘 스터디, 02: 백준 10250번, ACM 호텔 [PYTHON][파이썬] (1) | 2022.09.26 |
알고리즘 스터디, 01: 백준 2455번, 지능형 기차 [PYTHON][파이썬] (0) | 2022.09.20 |