문제를 읽은 후 든 생각
- 정규식으로 처리하자
문제 풀이 중 겪은 어려움
- 정규식 매칭이 내 마음대로 되지 않음
p = re.compile('(\w)\1')
result = p.match('baabaa')
print(result)
result에 None이 들어있다....
내 예상은 aa에 해당하는 두 위치(1-2, 4-5)가 들어있어야 한다고 생각한다.
정규식 매칭 방식을 잘못 알고있는 것 같아서 regexr.com 돌려보았다.
내가 원하는 곳을 잘 찾는 것 같은데... 코드에서 뭘 잘못한걸까? 잘 모르겠다!!
07월 21일 추가작성
이스케이프(백슬래쉬) 문제였다.
다음과 같이 작성하면 된다.
p = re.compile('(\\w)\\1') # 둘 중에 편한대로 사용
// p = re.compile(r'(\w)\1')
result = p.finditer('baabaa')
print(result)
match 함수가 동작하지 않는 이유는 모르겠다. 그렇기 때문에 finditer를 사용한 후 for문을 사용하여 원하는 문자열을 찾을 수 있었다.
해결방안
- 같은 문자가 2개 붙어있는 짝을 찾는 문제이므로 스택을 이용하기로 했다.
코드
더보기
def solution(s):
stack = []
for alpha in s:
if len(stack) == 0:
stack.append(alpha)
elif stack[-1] == alpha:
stack.pop()
else:
stack.append(alpha)
if stack:
return 0
return 1
고찰
- 정규식으로 풀면 시간초과가 난다고 하는데 그래도 풀어보고 싶다.
- 정규식에 대해 좀 더 알아볼 필요를 느꼈다.
'알고리즘 > 프로그래머스' 카테고리의 다른 글
더 맵게 level2 (0) | 2021.07.24 |
---|---|
오픈채팅방 level2 (0) | 2021.07.23 |
기능개발 - level2 (0) | 2021.07.21 |
[1차] 다트 게임 (파이썬) (0) | 2021.07.14 |
숫자 문자열과 영단어 (파이썬) (0) | 2021.07.13 |
댓글