효율성 실패한 나의 첫번째 풀이
def solution(n):
if n == 1 or n == 2:
return 1
result = [0] * (n + 1)
result[1] = 1
result[2] = 1
for i in range(3, n+1):
# 이전에 구한 결과값을 재사용
if i % 2 == 0:
result[i] = result[i // 2]
else:
result[i] = result[i-1] + 1
return result[n]
▶ for문 때문에 작은 수부터 큰 수까지 쭈욱 훑어서 효율성 테스트에서 계속 실패했다.
효율성 테스트를 통과한 풀이
def solution(n):
if n==1 or n==2:
return 1
if n % 2 ==0:
return solution(n//2)
else:
return solution(n-1)+1
▶ n/2를 위 코드에 사용했을 때는 효율성 테스트를 못했는데,
n//2를 위 코드에 사용했을 때는 효율성 테스트에 통과를 했음
▶ 필요한 함수만 스캔해서 리턴값을 반환받자!!!
'프로그래머스(파이썬) > LV.2(파이썬)' 카테고리의 다른 글
멀리 뛰기 → 점화식★★ + 재귀함수★★ + 피보나치수열 (0) | 2022.12.25 |
---|---|
예상 대진표 ★★ (0) | 2022.12.25 |
N개의 최소공배수→연쇄법칙★ + if not stack: 스택이 비어있다면 (0) | 2022.12.24 |
구명보트→ 침몰하는 타이타닉(그리디)★★ (0) | 2022.12.24 |
끝말잇기→인덱스 순환 +stack사용해서 중복체크, index+1은 사람번호, 인덱스 별도 저장★★+ turn//n+1 (0) | 2022.12.24 |