[HackerRank] Two Characters

개발새발log·2023년 5월 18일
0

해커랭크&릿코드

목록 보기
2/4

문제

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
profile
⚠️ 주인장의 머릿속을 닮아 두서 없음 주의 ⚠️

0개의 댓글