Algorithms63 백준 11478. 서로 다른 부분 문자열의 개수 역시 집합을 이용해서 풀 수 있었던 문제. 단순하게 이중 반복문을 통해서 모든 부분 문자열을 만들어주고, 집합에 때려넣어서 중복을 제거해주면 된다. s = input() s1 = set() for i in range(len(s)): for j in range(i, len(s)): s1.add(s[i : j + 1]) print(len(s1)) 2022. 6. 9. 백준 1269. 대칭 차집합 파이썬은 신이다. 나는 무적이고. 파이썬의 내장 집합 자료형으로 매우 간단하게 풀 수 있다. 차집합은 집합 간 - 연산으로 간단히 구할 수 있고, 합집합 또한 union 메서드를 통해 간단하게 구현할 수 있다. n, m = map(int, input().split()) s1 = set(map(int, input().split())) s2 = set(map(int, input().split())) print(len((s1 - s2).union((s2 - s1)))) 2022. 6. 7. 백준 1764. 듣보잡 시간 오버가 나진 않을까,, 잔뜩 쫄았지만 생각보다는 금방 되었던 문제. 그냥 딕셔너리에 넣고, 순회하면서 카운트하고, 키 리스트를 정렬까지 해도 시간이 된다. n, m = map(int, input().split()) dic = {} for i in range(n): name = input() dic[name] = 1 count = 0 for i in range(m): name = input() if dic.get(name) != None: dic[name] += 1 if dic[name] == 2: count += 1 print(count) for i in sorted(dic.keys()): if dic[i] == 2: print(i) 2022. 6. 7. 백준 10816. 숫자 카드 2 쉬웠다 ! 딕셔너리를 활용할 생각을 하면 그다지 어려웠던 문제는 아니었던 듯. 모든 카드에 대해서 딕셔너리의 값을 카운트로 넣고, get()의 값이 None이면 0을 출력하고 아니라면 딕셔너리에 저장된 카운트를 출력하는 방법. 확실히 리스트를 이용하지 않은 방법이 훨씬 빠른 것 같다. n = int(input()) lst = list(map(int, input().split())) dic = {} for i in lst: if dic.get(i) == None: dic[i] = 1 else: dic[i] += 1 m = int(input()) lst = list(map(int, input().split())) for i in lst: if dic.get(i) == None: print(0, end=" ".. 2022. 6. 7. 이전 1 ··· 9 10 11 12 13 14 15 16 다음