https://www.hackerrank.com/challenges/two-characters/problem
정규표현식을 활용한 완전 탐색으로 풀었다. 사실 꼭 regex를 활용할 필요는 없다. 그냥 보자마자 regex 활용하면 편하겠는데,, 해서 썼을 뿐
조합으로 고른 두 가지 문자 빼고 전부 없애보며 조건을 만족하는 걸 찾으면 된다.
정규표현식을 활용하면 훨씬 편하게 풀 수 있다. 아래처럼 두개 문자를 제외한 다른 문자들을 없애는 정규표현식을 활용했다 :
restr = re.sub(r'[^' + two_letters[0] + two_letters[1] + r']', '', s)
정규식 구문 안에 변수 넣으면 편하겠다 싶어서 방법을 찾아봤다:
📍 참고: https://ohgyun.com/728
import re
from itertools import combinations
def is_valid(ps):
for i in range(1, len(ps)):
if ps[i] == ps[i - 1]: return False
return True
def alternate(s):
aset = set(s)
# edge case
if len(aset) < 2:
return 0
max_len = 0
for two_letters in combinations(aset, 2):
restr = re.sub(r'[^' + two_letters[0] + two_letters[1] + r']', '', s)
if is_valid(restr):
max_len = max(max_len, len(restr))
return max_len