티스토리 뷰

https://www.acmicpc.net/problem/14425

 

14425번: 문자열 집합

첫째 줄에 문자열의 개수 N과 M (1 ≤ N ≤ 10,000, 1 ≤ M ≤ 10,000)이 주어진다.  다음 N개의 줄에는 집합 S에 포함되어 있는 문자열들이 주어진다. 다음 M개의 줄에는 검사해야 하는 문자열들이 주어

www.acmicpc.net

 

 

 

 

 

👩‍💻교집합을 사용해 중복되는 문자열 개수 출력 : 틀렸습니다☠️

m, n = map(int, input().split())
mli = []
nli = []
for i in range(m):
    mli.append(input())
for i in range(n):
    nli.append(input())
print(len(set(mli) & set(nli)))
# 교집합을 사용해 중복되는 문자열의 개수 출력

 

데이터 형식이 set일 때는 중복은 포함하지 않기 때문에 같은 문자열이 두 번 등장하더라도 한 번밖에 카운팅 되지 못한다.

 

오답 예시

보는 것과 같이 a가 두 번 나오기 때문에 출력값이 2가 되어야하지만,

결과가 1인 것을 확인할 수 있다.

 

 

 

 

👩‍💻중복된 문자열도 포함되도록 코드 추가 : 성공🌈

m, n = map(int, input().split())
mli = []
nli = []
for i in range(m):
    mli.append(input())
for i in range(n):
    nli.append(input())

res = list(set(mli) & set(nli))
cnt = 0
for i in nli:
  if i in res:
    cnt += 1
print(cnt)

 

res = list(set(mli) & set(nli))
cnt = 0
for i in nli:
  if i in res:
    cnt += 1
# nli에 존재하는 문자열이 res(교집합에 해당하는 문자열) 리스트에도 있을 때 cnt += 1
print(cnt)

 

 

 

🚀결과🚀

 

 

 

정답은 맞았지만.. 시간이 무지 오래 걸린다...

 

댓글
최근에 올라온 글
«   2024/11   »
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 27 28 29 30
Total
Today
Yesterday