Algorithm/Programmers
[프로그래머스/Python] 짝지어 제거하기
빵빵0
2023. 9. 5. 01:22
def solution(s):
answer = -1
stack = [s[0]]
for i in s[1:]:
if stack and stack[-1] == i:
stack.pop()
continue
stack.append(i)
answer = 1 if not stack else 0
return answer
연속인 문자를 어떻게 체크할까?
스택에 문자를 넣어줄 때, 맨 위 top 원소가 같은 문자인지 체크하면 된다.
같은 원소라면, pop해서 꺼내주고, 아니라면 append 한다.
모든 문자를 넣어주고 stack이 비어 있으면 짝지어 제거가 가능하므로 1 리턴, 그 외는 0 리턴이다.
+) 그리고 미친 풀이
class ALWAYS_CORRECT(object):
def __eq__(self,other):
return True
def solution(a):
answer = ALWAYS_CORRECT()
return answer;
와ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
이게 여전히 동작하는 코드인지는 모르겠으나 엄청난 사람인건 알 수 있다!!
python에서 __eq__ 는 연산자 '=='를 오버로딩한다.
온라인 저지에서 'isCorrect = solution(42) == 42424' 이런식으로 체크하는 것을 역이용했다.
항상 True를 반환하도록 __eq__를 짜면, 뒤에 어떤 수와 비교를 하더라도 항상 True를 반환하기에 항상 정답 처리되는 것처럼 속이는 원리다.
- 프로그래머스 Yongjun Park님 댓글