<짝지어 제거하기>
문제(출처: https://school.programmers.co.kr/learn/courses/30/lessons/12973)
문제 풀이
- my solution
def solution(s):
answer = 1
temp=[]
temp.append(s[0]) #첫번째 값 추가
for i in range(1,len(s)):
if(len(temp)==0): #길이가 0이면 그냥 추가
temp.append(s[i])
elif(temp[-1]==s[i]): #같은 값이면 pop
temp.pop()
else: #같은 값이 아니면 추가
temp.append(s[i])
if(len(temp)!=0): #길이가 0이 아니면 짝지어 제거하기 성공 x
answer=0
return answer
처음에는 while문을 사용하여 문자열의 길이가 0이 아닐 때까지 반복하는 방식으로 코드를 구현하였다.
하지만 이 방법으로는 시간 초과가 발생하였다. pop 때문인가 해서 pop이 아닌 인덱스로 접근하는 방법을
구현했지만 마찬가지로 시간 초과가 발생하였다. 다른 사람의 문제 풀이를 찾아본 결과 stack을 이용하면
된다는 힌트를 얻었다.
1) 첫 번째 값을 list에 추가
2) 문자열 끝까지 반복
2-1) list 길이가 0이면 그냥 문자 추가
2-2) list에 있는 값과 list에 넣을 값이 같으면 list 값 pop
2-3) 같은 값이 아니면 문자 추가
3) list 길이가 0이 아니면 짝지어 제거하기 성공 x 이므로 answer=0
출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges
'🌞Algorithm > 🔥programmers' 카테고리의 다른 글
| [programmers] [1차] 캐시 - 2018 KAKAO BLIND RECRUITMENT (0) | 2021.01.19 |
|---|---|
| [programmers] 영어 끝말잇기 - Summer/Winter Coding(~2018) (0) | 2021.01.12 |
| [programmers] 이진 변환 반복하기 - 월간 코드 챌린지 시즌1 (0) | 2021.01.11 |
| [programmers] 예산 - Summer/Winter Coding(~2018) (1) | 2021.01.11 |
| [programmers] 내적 - 월간 코드 챌린지 시즌1 (0) | 2021.01.11 |