취준시절/프로그래머스
[프로그래머스] 숫자의 표현 - Python
MAYMIN
2021. 8. 5. 21:46
728x90
SMALL
첫 번째 풀이에서......................
정답은 다 맞는데 효율성에서 다 탈락......😖
정답 확인할 때도 엄청 오래걸리더라................ 슬라이싱 하는게 진짜 오래걸리나보당 ㅠㅠ
쓸 때 조심히 써야겠음 😥
[효율성 망 풀이]
def solution(n):
answer = 1
arr = [i for i in range(n+1)]
for i in range(1,(n//2)+2):
for j in range(1,i+1):
if sum(arr[j:i+1]) == n:
answer+=1
return answer
그래서 배열 슬라이싱 안쓰고 숫자 카운트해서 더해주면서 다시 계산했다 . !
[ 정답 풀이 ]
def solution(n):
answer = 1
for i in range(1,(n//2)+1):
cnt=0
for j in range(i,n+1):
cnt+=j
if cnt==n:
answer+=1
break
elif cnt>n:
break
return answer
정답도 빨리 나오고, 효율성도 다 통과 한 정답 풀이이다 !!!
(n//2)+1까지만 for문 돌린 이유는
예를들어 n이 15라면 8 ~ 9~ 는 더해도 15가 넘기때문에 고려 안 해줘도 된다 😎
728x90
LIST