boj 1764 듣보잡(실버4)

김준오·2021년 8월 10일
0

알고리즘

목록 보기
24/91
post-thumbnail

문제

boj 1764 듣보잡

쉬운문제이므로 설명은 패스하겠다
그냥 너무 안풀면 감 떨어질까봐 친구랑 몇문제만 풀고가자길래 가벼운마음으로 풀었다
모든 코테가 이정도로 쉬우면 얼마나좋을까..

풀이1 set 사용

n,m = map(int,input().split())
s1 = set()
s2 = set()

for _ in range(n):
  s1.add(input().rstrip())

for _ in range(m):
  s2.add(input().rstrip())

s3 = list(s1 & s2)
print(len(s3))
s3.sort()
for word in s3:
  print(word)

풀이2 dict 사용

n,m = map(int,input().split())
s1 = {}

for _ in range(n):
  a = input().rstrip()
  if a in s1:
    s1[a] += 1

  else :
    s1[a] = 1

for _ in range(m):
  a = input().rstrip()
  if a in s1:
    s1[a] += 1

  else :
    s1[a] = 1

answer = [k for k,v in s1.items() if v == 2]
print(len(answer))
answer.sort()
for word in answer:
  print(word)

set이랑 dict중에 뭐가 더 빠를까 시간복잡도 계산하다가 그냥 둘다 돌려봤다
세세하게 따지려니깐 뭐가 더 빠른지 수치로 체크하는게 엄청 헷갈린다

결과

먼저 푼게 set연산 결과이고 두번째 푼게 dict 결과이다
set으로 한게 쪼끔 더 빠른것같다

Set 연산

s1.add(3)  //1개 추가
s1.update([1,2,3]) // 여러개 추가
s1.remove(3) // 제거

s3 = s1 & s2 하면 두 set의 교집합이 set 타입으로 만들어진다.
s3 = s1 - s2 // 차집합
s3 = s1 | s2 // 합집합

끝!!

profile
jooooon

0개의 댓글

관련 채용 정보