일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- Greedy
- Dijkstra
- 프로그래머스
- codility
- beandefinitionstoreexception
- BFS
- 탐욕법
- 2018 KAKAO BLIND RECRUITMENT
- spring security
- springboot
- error
- 코딩테스트
- 최단경로
- 소수
- 알고리즘
- 라이브템플릿
- Spring
- 백준
- 파이썬
- API
- HTTP
- javascript
- 2981
- brute force
- java
- counting elements
- algorithm
- 문자열
- Python
- applicationeventpublisher
Archives
- Today
- Total
Altiora Petamus
애너그램 만들기 본문
🤔생각해보기
브론즈2 답지 않게 문제는 엄청 복잡하게 적어놨지만, 정리해보면 두 문자열에서 동시에 포함하지 않은, 서로의 문자열에만 포함된 문자열을 찾는 문제입니다.
set() 을 사용하면 집합 연산을 사용할 수 있지만, 중복이 제거되면서 개수를 파악하기 힘들게 될 수 있기 때문에, Counter 를 사용해주었습니다.
Code
from collections import Counter
a = Counter(input())
b = Counter(input())
# a.keys() ^ b.keys() => {x, y, c, a}
print(sum(((a | b) - (a & b)).values()))
Counter 객체를 직접 ^(대칭차집합) 연산자로 처리할 수 없기 때문에 대칭차집합과 논리적으로 동일한 합집합에서 교집합을 빼주는 방법으로 해결했습니다. 그리고 문제는 문자 수를 구해야하기 때문에 values() 를 사용해서 합계를 구해줍시다.
'1day-1algorithm' 카테고리의 다른 글
대칭 차집합 (0) | 2021.09.05 |
---|---|
유진수 (0) | 2021.08.27 |
Perm Check (0) | 2021.08.23 |
DNA (0) | 2021.08.22 |
세로읽기 (0) | 2021.08.17 |