푸는 방식(?)은 똑같은데 구현한것에 따라서 효율성이 많이 차이가 난다. 여러가지 코드를 참고하면서 효율적인 코드 작성에 대해서 공부해야겠다.
짝지어 제거하기
효율성 통과 못한 코드
def solution(s):
s = [t for t in s]
stack = [s.pop(0)]
while s:
stack.append(s.pop(0))
while len(stack) > 1 and stack[-1] == stack[-2]:
stack.pop()
stack.pop()
if stack:
return 0
else:
return 1
효율성 통과 코드
def solution(s):
stack = []
for i in s:
if len(stack) == 0: stack.append(i)
elif stack[-1] == i: stack.pop()
else: stack.append(i)
if len(stack) == 0: return 1
else: return 0
두 코드 실행시간이 10배 가까이 난다.
숫자의 표현
효율성 통과 못한 코드
def solution(n):
answer = [i for i in range(n+1)]
cnt = 0
for i in range(1,n+1):
answer[i] += answer[i-1]
if answer[i] >= n:
for j in range(i-1,-1,-1):
if answer[i] - answer[j] == n:
cnt += 1
break
return cnt
def solution(n):
count = 0
for i in range(1, n+1): # 예시의 `15=15`도 있기 때문에 n+1 까지 반복문 실행
sumN = 0
for j in range(i, n+1): # i값을 시작으로 반복문 실행
sumN += j # i값부터 계속해서 값을 더해준다
if sumN == n: # 더한 값이(sumN)이 n과 같다면 count +1, break
count += 1
break
if sumN > n: # 더한 값(sumN)이 n보다 크다면 계산할 필요가 없음
break
return count