본문 바로가기

전체 글92

백준 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.
백준 1620. 나는야 포켓몬 마스터 이다솜 생각보다는 어려웠던 문제. 시간이 생각보다 빡빡해서 탐색 함수를 최대한 안 쓰려 했다. 포켓몬의 이름을 인덱스 순서로 삽입하는 리스트 하나, 이름을 키로, 번호를 값으로 가지는 딕셔너리 하나 이렇게 두 개의 객체를 만들어야 했다. n, m = map(int, input().split()) dic = {} lst = [] for i in range(1, n + 1): name = input() dic[name] = i lst.append(name) for i in range(m): s = input() if s.isdigit(): print(lst[int(s) - 1]) else: print(dic[s]) 2022. 6. 7.