문제 분석하고 풀기
이중 반복문으로 문제를 해결하려는 경우가 많다.
(나도 보자마자 이중 반복문을 생각했다.) 근데 무조건 시간 초과 발생한다고 한다.
그리고 심지어 Stack 개념으로 해결하는게 훨씬 코딩하기가 쉽다(개인적으로)
내가 짠 코드(Version 1)
def solution(s):
answer = 0
stack = []
for i in s :
if not stack :
stack.append(i)
else:
if stack[-1]==i:
stack.pop()
if not stack:
answer = 1
return answer
이렇게 테스트를 돌려봤을 때 잘 돌아가서
"헐 대박, 한 1분만에 짰는데 잘 돌아가네? 나 쫌 늘었는데?
싶었는데 역시나...
실패가 뜬다..
그래서 우선 책의 코드를 보니
내가 빼먹은 케이스가 바로 떠올랐다.
빼먹은 케이스 조건
1. stack에 이미 데이터가 있는데
2. stack[-1] 마지막 데이터와 i 즉 이제 들어오는 문자열과 다른 경우 append(i)
이 걸 빼먹었었다.
내가 짠 코드(Version 2)
def solution(s):
answer = 0
stack = []
for i in s :
if not stack :
stack.append(i)
else:
if stack[-1]==i:
stack.pop()
else : #이 부분을 처음에 처리를 안해줬었다.
stack.append(i)
if not stack:
answer = 1
return answer
잘 돌아갔다.
그리고
책에 나온 코드
def solution(s):
answer = 0
stack = []
for i in s :
if stack and stack[-1] == i:
stack.pop()
else:
stack.append(i)
if not stack:
answer = 1
return answer
깔끔하네. 확실히 :)
https://school.programmers.co.kr/learn/courses/30/lessons/12973
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
감사합니다.
'프로그래밍 이야기 > 파이썬 코딩 테스트 스터디' 카테고리의 다른 글
파이썬 코딩테스트 스터디 3주차 #6 - 크레인 인형 뽑기 게임 (0) | 2024.07.09 |
---|---|
파이썬 코딩테스트 스터디 3주차 #5 - 주식 가격 (0) | 2024.07.08 |
파이썬 코딩테스트 스터디 3주차 #3 - 10진수를 2진수로 변환하기 (0) | 2024.07.07 |
파이썬 코딩테스트 스터디 3주차 #1 - 스택 개념 / 정의 (0) | 2024.07.06 |
파이썬 코딩테스트 스터디 2주차 #7 - 문제 06 실패율 (0) | 2024.07.03 |