데이터사이언스 기록기📚

[프로그래머스] Level 2_숫자의 표현(연습문제) 본문

Coding Test/프로그래머스(Python)

[프로그래머스] Level 2_숫자의 표현(연습문제)

syunze 2022. 10. 12. 17:12

📌문제 유형

연습문제

 

📌문제

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

📌나의 문제풀이

- nums에 1~n까지의 숫자 생성

- 이중 for문 사용

  • 첫 번째 for문에서 첫 숫자 더하기 (초기화 작업도 포함)
    • n_to_sum이 num과 같은 경우 answer에 더하기
  • 두 번째 for문에서 연속해서 값 더하기
    • n보다 큰지, 작은지 같은지 확인
    • n이 n_to_sum과 같으면 answer에 더하기
def solution(n):
    answer = 0
    nums = [i+1 for i in range(n)]

    for num in nums:
        n_to_sum = 0
        n_to_sum += num
        
        if n_to_sum == n:
            answer += 1
            break
            
        for i in range(num+1, len(nums)):
            n_to_sum += i
            if n_to_sum < n:
                continue
            elif n_to_sum > n:
                break
            else:
                answer += 1
                break

    return answer

 

📌다른 사람의 문제풀이

1) 등차수열

더보기

num의 약수의 개수로 접근

 

출처: https://school.programmers.co.kr/learn/courses/30/lessons/12924/solution_groups?language=python3

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

2) 유사 문제풀이1

def expressions(num):
    answer = 0
    for i in range(1, num + 1):
        s = 0
        while s < num:
            s += i
            i += 1
        if s == num:
            answer += 1

    return answer

3) 유사 문제풀이2

def expressions(num):
    answer = 0

    for i in range(1, num+1):
        sum_val = 0
        for j in range(i, num+1):
            sum_val += j
            if sum_val == num:
                answer += 1
                break
            elif sum_val > num:
                break

    return answer

 

📌리뷰

 - for문 두 번 사용하여 연속된 숫자 계산 가능

 - 수학공식으로 해결할 수 있음

728x90
Comments