[내 풀이]
def solution(myStr):
res = myStr.split('a')
temp = []
for x in res:
temp += x.split('b')
ans = []
for x in temp:
ans += x.split('c')
ans = [x for x in ans if x != '']
return ans if len(ans)!=0 else ["EMPTY"]
[참고 풀이]
- 구분자 a, b, c 는 모두 같은 역할을 하기 때문에, 하나의 다른 문자로 바꿔버리고 같은 취급을 해버리는 것이 핵심
def solution(myStr):
answer = [x for x in myStr.replace('a', ' ').replace('b', ' ').replace('c', ' ').split() if x]
return answer if answer else ['EMPTY']
[내 풀이]
- try-except 구문을 이용해서 오류 발생시 다른 로직이 작동하도록 한다
def solution(arr):
try:
if (arr[::-1].index(2)==0):
return arr[arr.index(2):]
return arr[arr.index(2):-(arr[::-1].index(2))]
except:
if 2 not in arr:
return [-1]
[참고 풀이]
- -1, -2, -3 과 같이 리스트 값을 찾으려 할 때 문제가 발생하는 것이기 때문에 len(arr)을 이용해서 양수인덱스로 표현하도록 한다
def solution(arr):
if 2 not in arr:
return [-1]
return arr[arr.index(2) : len(arr) - arr[::-1].index(2)]
[내 풀이]
- 이렇게 하면 마지막의 경우는 n번 조건문을 확인해야 해서, n이 커질 수록 이진 트리 방식으로 조건문을 나누는 게 좋다고 한다.
def solution(n, slicer, num_list):
a,b,c = slicer
if n==1:
return num_list[:b+1]
elif n==2:
return num_list[a:]
elif n==3:
return num_list[a:b+1]
else:
return num_list[a:b+1:c]
[참고 풀이]
- n에 따라 어떤 공식을 사용할 지 고르는 것을 리스트 안에 공식들을 넣어놓고 [n-1]인덱스를 찾아가도록 할 수 있구나.
def solution(n, slicer, num_list):
a, b, c = slicer
return [num_list[:b + 1], num_list[a:], num_list[a:b + 1], num_list[a:b + 1:c]][n - 1]
[내 풀이]
def solution(arr):
stk=[]
i=0
while i<len(arr):
if stk==[]:
stk.append(arr[i])
else:
if stk[-1] == arr[i]:
stk.pop()
else:
stk.append(arr[i])
i+=1
return stk if stk!=[] else [-1]
[참고 풀이]
- return stk or [-1] : 객체 or 연산. bool(Left Object)가 false이면(비어 있으면) 오른쪽 값을 사용한다!
- stk.append(arr[i])가 중복되니까, 한 가지의 경우로 요약
- while, i=0, i++ 이 for 과 완전히 같으므로 for으로 표현
def solution(arr):
stk = []
for i in range(len(arr)):
if stk and stk[-1] == arr[i]:
stk.pop()
else:
stk.append(arr[i])
return stk or [-1]
댓글