짝지어 제거하기
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
- 내 풀이
- 실행됐지만 테케 시간초과, 출력크기 초과로 에러
def remove(sss):
stop=0
result=""
for i,s in enumerate(sss):
if stop==1:
stop=0
continue
if i!=len(sss)-1:
if sss[i+1]==s:
stop=1
continue
result+=s
return result
def solution(string):
cnt=0
n=0
while cnt!= len(string):
#while문 실행 횟수
n+=1
cnt=len(string)
string=remove(string)
if n==1: return 0
if string:
return 0
else:
return 1
- 다른 사람 풀이
- 📍변하는 하나의 값을 계속 확인해야하므로 stack 사용
- 스택에 변한 값들 쌓아서 계속 확인
- stack을 이용해서 맞는 쌍이 나오면 pop하는 형식
- 처음 값 스캔할때 중복되는 값들은 바로 지워버리고 추가를 안하기 때문에
- 앞글자랑 뒤에나오는 글자가 겹치면 stack[-1]==i 로 체크가 가능함
- -> s 한번 스캔으로 다 해결 가능
- 📍변하는 하나의 값을 계속 확인해야하므로 stack 사용
def solution(s):
stack = []
for i in s:
if len(stack) == 0: stack.append(i)
elif stack[-1] == i: stack.pop()
else: stack.append(i)
if len(stack) == 0: return 1
else: return 0
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
| [프로그래머스] [2019 카카오 개발자 겨울 인턴십] 튜플 (0) | 2023.02.01 |
|---|---|
| [프로그래머스] 귤고르기 (0) | 2023.01.28 |
| [프로그래머스] [Level 3] [DP] 정수 삼각형 (0) | 2023.01.18 |
| [프로그래머스] [Level 3] [Heap] 디스크 컨트롤러 (0) | 2022.10.23 |
| [프로그래머스] [Level 3] [해시] 베스트 앨범 (0) | 2022.10.06 |