코딩테스트 연습 - 두 정수 사이의 합 | 프로그래머스 스쿨 (programmers.co.kr)
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제
두 정수 a, b가 주어졌을 때 a와 b 사이에 속한 모든 정수의 합을 리턴하는 함수, solution을 완성하세요.
예를 들어 a = 3, b = 5인 경우, 3 + 4 + 5 = 12이므로 12를 리턴합니다.
제한 조건
a와 b가 같은 경우는 둘 중 아무 수나 리턴하세요.
a와 b는 -10,000,000 이상 10,000,000 이하인 정수입니다.
a와 b의 대소관계는 정해져있지 않습니다.
입출력 예
a | b | return |
3 | 5 | 12 |
3 | 3 | 3 |
5 | 3 | 12 |
풀이
아이디어: a와 b 중에서 큰 수와 작은 수를 구별하고, 두 수 사이의 범위를 range()로 지정하여 합한다.
# 풀이1
def solution(a, b):
if a <= b:
answer = sum([ x for x in range(a,b+1)])
return answer
else:
answer = sum([ x for x in range(b,a+1)])
return answer
-> 처음에는 min(), max()를 사용하는 방법이 생각이 안나서, a가 큰 경우와 b가 큰 경우를 나눠서 코드를 작성했다.
# 풀이2
def solution(a, b):
small = min(a,b)
big = max(a,b)
answer = sum(range(small, big+1))
return answer
-> min()과 max()로 대소관계 구별해 주고 코드 한번만 작성하여 끝내기
# 풀이3
def solution(a, b):
minimum, maximum = min(a, b), max(a, b)
return (maximum + minimum) * (maximum - minimum + 1) / 2
-> 언젠가 수학시간에 배웠던 등차수열 합 공식을 사용.
+) 등차수열 합 공식
a = 첫번째 항, l= 마지막 항, n=총 개수(a부터 l까지 항들의 개수)
'문제풀이 > 프로그래머스' 카테고리의 다른 글
[프로그래머스 Lv.1] 서울에서 김서방 찾기 (Python) (0) | 2024.07.09 |
---|---|
[프로그래머스 Lv.1] 콜라츠 추측 (Python) (0) | 2024.07.09 |
[프로그래머스 Lv.1] 정수 내림차순으로 배치하기 (Python) + sort(), join()함수 (0) | 2024.07.08 |
[프로그래머스 Lv.1] 자연수 뒤집어 배열로 만들기(Python) (0) | 2024.07.08 |
[프로그래머스 Lv.1] x만큼 간격이 있는 n개의 숫자 (Python) (0) | 2024.07.08 |