두 정수 사이의 합
문제 설명
두 정수 a, b가 주어졌을 때 a와 b 사이에 속한 모든 정수의 합을 리턴하는 함수, solution을 완성하세요.
예를 들어 a = 3, b = 5인 경우, 3 + 4 + 5 = 12이므로 12를 리턴합니다.
예를 들어 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 |
문제풀이 IDEA
파이썬에서는 sum함수도 있고 list를 만드는 것도 쉽기때문에 list comprehension을 이용해
코드를 간결하게 짤수 있을 것 같다.
나의 코드⭐
1 2 3 4 5 6 7 8 |
def solution(a, b): if a<=b: temp = [i for i in range(a,b+1)] #b가 a보다 크다면 a부터 b까지 else: 반복문을 통해 list생성 temp = [i for i in range(b,a+1) ] #a가 b보다 크다면 range의 인자를 바꾸어 b부터 a까지 생성 return sum(temp[:len(temp)])
( 풀이를 적으면서 보니 그냥 temp만 넣어주는거랑 같은말)
|
다른 코드1 ⭐
1 2 3 4 5 6 7 8 9 10 11 | # 문제가 개편 되었습니다. 이로 인해 함수 구성이 변경되어, 과거의 코드는 동작하지 않을 수 있습니다. # 새로운 함수 구성을 적용하려면 [코드 초기화] 버튼을 누르세요. 단, [코드 초기화] 버튼을 누르면 작성 중인 코드는 사라집니다. def adder(a, b): # 함수를 완성하세요 if a > b: a, b = b, a #a가 만약 b보다 크다면 a와 b를 swap해서 값을 바꿔줌 return sum(range(a,b+1)) a부터 b까지의 값을 sum해줌 |
다른 코드2 (덧셈공식 이용) ⭐
1 2 3 4 5 6 7 8 | # 문제가 개편 되었습니다. 이로 인해 함수 구성이 변경되어, 과거의 코드는 동작하지 않을 수 있습니다. # 새로운 함수 구성을 적용하려면 [코드 초기화] 버튼을 누르세요. 단, [코드 초기화] 버튼을 누르면 작성 중인 코드는 사라집니다. def adder(a, b): return (abs(a-b)+1)*(a+b)//2 #abs라는 절댓값을 구하는 내장함수를 이용 a ~ b까지의 합을 구하는 덧셈 공식을 이용했다
# 아래는 테스트로 출력해 보기 위한 코드입니다. print( adder(3, 5)) |
살짝 더 알아 보자
python에서의 swap
if a > b:
a,b = b,a
a,b = b,a를 이용해서 값 두개를 서로 바꿔줬다
a,b = b,a 뿐만아니라
a,b,c = b,c,a 이처럼 3개의 tuple에 대해서도 손쉽게 값을 swap해줄 수 있다.
단 주의 할점은 a,b = b,a 가 적용되는 범위는 해당 식이 있는 블록이라고 생각해주자
예시)
def swap(a,b)
a,b = b,a
swap(a,b)를 해주면 a와 b의 값이 변경되지 않는다(함수 내에서만 변경된다)
따라서 swap (a,b) 이렇게 해주지 말고 그냥 a,b = b,a 이런식으로 작성을 해서 사용
덧셈공식
그.. 가우스의 천재성에 대한 일화로 유명한 1~100 까지의 덧셈방법이 기억나는가
(이 일화가 사실인지는 모르겠다)
1과 100을 더하고 2와 99를 더하고... 총 갯수의 반인 50을 곱해준 일화
이처럼 a부터 b까지의 합을 구하기 위해서는
(첫번째항 + 마지막항) * 총 갯수/2 가 공식임을 다시한번 되새겨 보자
출처:https://programmers.co.kr
댓글 없음:
댓글 쓰기