본문 바로가기
알고리즘/프로그래머스

프로그래머스 Lv2 숫자의 표현 (python)

by 개발하는 호랑이 2024. 2. 3.

숫자의 표현

풀이

for 문과 while문을 사용했다.
1. 우선 자기자신인 방법이 있으니 answer = 1로 등록
2. for 문으로 1, n//2 까지 확인 하기 n//2 + 1 이후로는 값을 더하게 되면 n을 넘어버리니까
3. while 문에서 sum_v == n이 되면 answer += 1 하고 break 후 다시 for문 돌기
4. for문 완료후 answr 반환

def solution(n):
    # 자기자신인 방법이 있으니까
    answer = 1
    # 1~ n//2까지 돌아가며 확인
    for i in range(1, n//2+1):
        sum_v = i
        j = i+1
        while sum_v < n:
            sum_v += j
            if sum_v == n:
                answer += 1
                break
            j += 1
    return answer

다른 사람 풀이

아래는 등차수열을 이용한 방법으로 보인다.
역시 똑똑한 사람이 많다.

def expressions(num):
    return len([i  for i in range(1,num+1,2) if num % i is 0])