나의 풀이
def solution(arr):
answer = []
for i in arr :
if answer :
if answer[-1] != i :
answer.append(i)
else :
answer.append(i)
return answer
빈 배열일 때는 원소에 접근을 할 수 없어 if answer 로 answer 배열이 빈 배열인지 확인하는 조건을 추가했다.
그런데..!
다른 분의 풀이를 보고 새로운 사실을 알게 되었다.
다른 풀이
def no_continuous(s):
a = []
for i in s:
if a[-1:] == [i]: continue
a.append(i)
return a
나는 배열[-1] 로 마지막 원소에 접근을 하였는데,
이분은 배열[-1:] 로 리스트끼리의 비교를 하였다...!
리스트를 슬라이싱하면 그대로 리스트가 산출물로 나오기 때문에,
비교대상인 i도 [i] 로 리스트화 해주어, 리스트끼리의 비교가 가능하게 만들었다.
def no_continuous(s):
result = []
for c in s:
if (len(result) == 0) or (result[-1] != c):
result.append(c)
return result
혹은 이렇게 리스트의 길이를 확인하는 조건문을 or 연산자 앞에 먼저 써주는 방법도 있었다!
이럴 경우 or 연산자의 앞 조건문이 True 라면 뒤 조건을 검사하지 않고, 바로 아래 구문을 실행하기 때문에
result[-1] 에서 error 가 날 이유가 없기 때문이다...!
파이썬 스택 관련 함수
파이썬에서는 list 로 스택을 사용할 수 있다.
스택이란 가장 나중에 넣은 데이터를 가장 먼저 빼낼 수 있는 데이터 구조로 Last In First Out(LIFO) 방식이다.
1) append
push() 대신 리스트.append(i) 를 사용하여 리스트의 맨 마지막에 원소를 추가할 수 있다.
2) pop
리스트의 맨 마지막 요소를 꺼내어 반환하는 동시에 삭제한다.
즉, A = [1,2,3] 이라는 리스트가 있을 때
print(A .pop()) 을 하면 3이 출력될 것이다.
그리고 A 리스트를 출력해보면 [1,2] 만 남아있음을 알 수 있다.
'알고리즘 > 스택,큐' 카테고리의 다른 글
[프로그래머스] 주식가격 - 파이썬(python) (0) | 2022.09.03 |
---|---|
[프로그래머스] 다리를 지나는 트럭 - 파이썬(python) (1) | 2022.09.03 |
[프로그래머스] 프린터 - 파이썬(python) (1) | 2022.09.02 |
[프로그래머스] 올바른 괄호 - 파이썬(python) (0) | 2022.09.02 |
[프로그래머스] 기능개발 - 파이썬(python) (0) | 2022.05.07 |
댓글