취준시절/프로그래머스

[프로그래머스] 숫자의 표현 - 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