본문 바로가기

Skill Sets/Python

[Python] n부터 m까지 자연수의 합(프로그래머스/python/COS Pro 2급)

SMALL

안녕하세요! 데코입니다!

 

오늘은 프로그래머스 코딩테스트 COS Pro 2급 모의고사에 있는 "n부터 m까지 자연수의 합" 문제를 포스팅하려고 합니다!

 

바로 포스팅 시작할게요! :)

(출처 : https://school.programmers.co.kr/learn/courses/33/lessons/1855)

 


 

1. 문제 : n부터 m까지 자연수의 합(COS Pro 2급)


 

2. 문제 설명

 

두 자연수 n부터 m까지의 합을 구하려고 합니다. 이를 위해 다음과 같이 3단계로 간단히 프로그램 구조를 작성했습니다.

 

1. 1부터 m까지의 합을 구합니다.
2. 1부터 n-1까지의 합을 구합니다.
3. 1번 단계에서 구한 값에서 2번 단계에서 구한 값을 뺍니다.

 

두 자연수 n과 m이 매개변수로 주어질 때,

n 부터 m까지의 합을 return 하도록 solution 함수를 작성했습니다.

이때, 위 구조를 참고하여 중복되는 부분은 func_a라는 함수로 작성했습니다.

코드가 올바르게 동작할 수 있도록 빈칸을 알맞게 채워주세요.

 

[ 매개변수 설명 ]


두 자연수 n과 m이 solution 함수의 매개변수로 주어집니다.
n, m은 1 이상 10,000 이하의 자연수이며, 항상 n ≤ m 을 만족합니다.

 

[ Return 값 설명 ]

solution 함수는 n부터 m까지의 합을 return 합니다.

 

[ 예시 ]

n m result
5 10 45
6 6 6

 

예시 #1

5부터 10까지 자연수의 합은 45입니다.

예시 #2

6부터 6까지 자연수의 합은 6입니다.


 

3. 문제 풀이

문제(빈칸)

 

문제 속 빈칸을 채우는 코드를 위에서 부터

빈칸1

빈칸2

이렇게 총 2개의 빈칸을 채우고 설명해볼게요!

 

#  문제 풀이 설명

문제 설명에 있었던 프로그램 구조를 먼저 보았어요!

 

1. 1부터 m까지의 합을 구합니다.
2. 1부터 n-1까지의 합을 구합니다.
3. 1번 단계에서 구한 값에서 2번 단계에서 구한 값을 뺍니다.

 

위 프로그램 구조에서 3번에 해당하는 것인 solution() 함수이고,

 

func_a(k) 함수가 1~k를 값을 합하여 계산해 주는 함수임을 확인했어요!

 

일단 1~k 모두 가져오기 위해서는 k만큼 반복해주어야 하기 때문에

 

range(k)로 빈칸1을 채워주었습니다.

# (빈칸1)
# k만큼 반복문을 실행
for i in range(k):

 

그다음에 k 만큼 반복하면

 

예시 1과 같이 k = n = 5라면,

 

1 + 2 + 3 + 4 + 5 = 15 를 계산해야 하고

 

i는 0부터 차례대로, 0, 1, 2, 3, 4 를 호출합니다!

 

따라서 sum+=에서는 i+1 인 값을 호출하도록 해주면 됩니다!

 

# (빈칸2)
# 1 ~ k 까지의 값을 합한 값
sum += i+1

 

이렇게 하면 func_a(k)라는 함수는, 1~k까지의 합을 구하여 retrun 하게 됩니다!

 

 

 


 

4. 문제 풀이 후기

이번 문제는 1~k값을 구하는 함수가 주어지고, 코드 내 빈칸을 채우는 문제였습니다.

 

보통 프로그래밍 할 때 반복문과 함께, 1~k값 더하기, 구구단 등의 문제를 많이 풀어봐서

 

친숙한 문제였습니다!

 

다만, 함수를 시작부터 끝까지 다 만드는 것이 아닌, 기존에 누가 틀을 잡아둔 함수에서

코드를 해석하고 빈칸을 맞게 넣어야 하는 것이 차별점 같아요!

 

크게 어려운 부분이 없어서 제가 따로 코멘트할 것은 없습니다!

 



이번 포스팅은 프로그래머스에 있는

 

COS Pro 2급 python 모의고사에 있는 문제를 풀어보았습니다!

 

보통은 함수를 직접 전부 만들고 원하는 값을 retrun 하는 알고리즘 문제도 많은데

 

빈칸을 채우는 게 저도 조금 생소한 것 같아요!

 

아직은 난이도가 매우 쉬운 편이지만, COS Pro 1급과 같이 난이도가 올라가면

 

해석하는 시간도 많이 소요되지 않을까 생각합니다!

 

앞으로도 COS Pro 2급 python 관련해서도 많이 포스팅하려고 합니다! 

 

설명이 어려운 부분 혹은 잘 이해가 안 가는 부분

그리고 더 궁금한 내용이 있다면

언제든지 댓글로 남겨주세요!

빠르게 궁금증을 해결해 드릴게요!

공감과 댓글은 큰 힘이 됩니다!

오늘도 블로그 방문해 주시고

포스팅 읽어주셔서 감사합니다!

 

 

LIST