250x250
반응형
Notice
Recent Posts
Recent Comments
Link
종식당
[프로그래머스 lv.2] 짝지어 제거하기 본문
728x90
반응형
https://school.programmers.co.kr/tryouts/72055/challenges
- 문제 설명
문자열 s가 주어지면 문자열에서 알파벳 두 개가 붙어있는 짝을 찾아 제거해 준다. 만약 baccab라고 했을 때 먼저 cc를 제거해 baab가 된다. 다음으로 aa를 제거해 bb가 되고 마지막으로 bb를 제거해 문자열을 모두 삭제한다. 이때 문자열이 모두 제거되면 1을 제거되지 않으면 0을 반환한다.
- 제출 코드
def solution(s):
answer = []
answer.append(s[0])
for i in s[1:]:
if len(answer) == 0:
answer.append(i)
elif answer[-1] == i:
answer.pop()
else:
answer.append(i)
return 1 if len(answer) == 0 else 0
짝을 지어서 제거한다는 키워드에서 스택을 생각해내야 할 것 같다. 빈 리스트를 만들어 먼저 문자열의 첫 글자를 넣어준다. 그리고 두 번째 글자부터 for문을 통해 리스트에 차례대로 넣을 것이다. 처음에는 리스트가 비어있을 때를 생각하지 않았는데 만약 이러면 첫 글자와 두 번째 글자가 같을 때 pop을 통해 제거될 것이니 리스트가 비어있게 된다. 그럼 그다음 for문에서 elif 문장에서 answer [-1]에서 오류가 나게 된다. 그래서 비어있을 때는 무조건 문자를 리스트에 넣어주었다.
리스트의 마지막 문자와 다음으로 들어올 문자가 같으면 해당 문자를 리스트에서 pop해 준다. 같지 않다면 그대로 리스트에 넣어준다. 이러고 난 후 리스트의 길이에 따라서 조건에 맞게 반환해 주면 된다.
728x90
반응형
'프로그래머스' 카테고리의 다른 글
[프로그래머스 lv.1] 나누어 떨어지는 숫자 배열 (0) | 2024.10.16 |
---|---|
[프로그래머스 lv.1] 같은 숫자는 싫어 (0) | 2024.10.15 |
[프로그래머스 lv.1] 2022 KAKAO BLIND RECRUITMENT 주차 요금 계산 (0) | 2024.04.05 |
[프로그래머스 lv.1] 2019 KAKAO BLIND RECRUITMENT 실패율 (1) | 2024.04.01 |
[프로그래머스 lv.1] 2021 Dev-Matching: 웹 백엔드 개발자(상반기) 로또의 최고 순위와 최저 순위 (0) | 2024.03.19 |