- 문제 : https://school.programmers.co.kr/learn/courses/30/lessons/12973
Lv2. 문제다!
문제 이해
반복되는 두개의 문자를 지워가면서 문자열이 다 지워지면 1을 출력하고, 그렇지 않으면 0을 출력한다
stack 리스트에 s의 문자들을 삽입하는데, 만약 추가하는 문자와 -1 인덱스의 문자가 같다면 문제의 조건을 만족하므로
pop()으로 -1 인덱스를 꺼낸다
아니라면 그냥 추가만한다
s의 문자가 모두 없어졌으면 1을, 아직 남은 문자가 있다면 0을 출력한다
- 정답 풀이 :
def solution(s):
stack = []
for c in s:
if not stack:
stack.append(c)
else:
if stack[-1] == c:
stack.pop()
else:
stack.append(c)
if stack:
return 0
return 1
- 시도해본 풀이 :
이렇게 하면 30%만 맞는다
같은 문자 두개 반복되는 경우는 어떻게 식별할 수 있는데 이제 0이 출력되는 경우는 어떻게 판별해야하나 아이디어가 떠오르지 않았다.
그러다가 나도 stack을 이용하는 걸 생각했었는데 아직 다루는 방법이 미숙한 것 같다
def solution(s):
s= list(s)
i = 1
flag = True
n = len(s)
while True :
if i == n // 2:
flag = False
break
if len(s) == 0:
break
if s[i - 1] == s[i]:
s = s[ : i - 1] + s[i + 1 :]
i = 1
else:
i += 1
if not flag:
return 0
else:
return 1
'코딩테스트 > 기출' 카테고리의 다른 글
[2017 팁스타운 / 프로그래머스] 12985번 : 예상 대전 (0) | 2022.09.11 |
---|---|
[연습문제 / 프로그래머스] 12953번 : N개의 최소공배수 (0) | 2022.09.11 |
[ / 프로그래머스] 12981번 : 영어 끝말잇기 (0) | 2022.09.09 |
[월간 코드 챌린지 시즌1 / 프로그래머스] 70129번: 이진 변환 반복하기 (0) | 2022.09.08 |
[2020 KAKAO BLIND RECRUITMENT / 프로그래머스] 60057번 : 문자열 압축 (1) | 2022.09.07 |