숫자의 표현

yongju·2022년 11월 10일
0

Programmers

목록 보기
16/23
post-thumbnail

프로그래머스 레벨2[정답율 73%]

❓문제

❗문제 정리
사용한 파라미터:
n(int) : 입력받은 자연수 n
count(int) : 표현할 수 있는 방법 수
sum(int) : 누적값


📑코드

def solution(n):
    count=1

    for i in range(1, n//2+1):#연속할 수 있는 수가 n의 반절+1을 넘어가지 않음
        sum=0#여기에 i가 변할때마다 누적값달라짐
        while sum<n:
            sum+=i
            i+=1
        if sum==n:
            count+=1
    return count

📝코드 설명

    for i in range(1, n//2+1):#연속할 수 있는 수가 n의 반절+1을 넘어가지 않음
        sum=0#여기에 i가 변할때마다 누적값달라짐
        while sum<n:
            sum+=i
            i+=1

연속한 자연수로 표현하는 수는 n의 반절을 넘지 않음. 예를들어, 15//2=7로 7+8=15임.
999//2=333으로, 332+333+334=999로 표현이 가능함.
따라서, 1부터 n의 반절까지 for문으로 누적할 수의 반복하여 범위 설정함.
내부에 while을 넣어 누적값 sum이 n보다 작을 때까지 수를 누적하여 sum에 저장

        if sum==n:
            count+=1
    return count

sum이 n보다 같거나 크게 되면 while문을 나와서 sum과 n이 같은지 검사하고 맞다면, count+1을하여 자연수로 표현하는 방법의 수를 늘림.


🎖제출 결과

💡insight
등차수열의 합 공식을 이용하면 가능하나, 등차 수열을 이해하지 못했다,,

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

0개의 댓글