반응형
문제 설명
두 정수 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의 대소관계는 정해져있지 않습니다.
해결 방법
1. a와 b의 대소관계를 확인하여 새로 할당한다.
2. a와 b의 사이 수들을 구한다.
3. 수들을 모두 합한다.
def solution(a, b):
num_list = [a, b]
a, b = num_list[a >= b], num_list[a < b]
answer = sum(range(a, b+1))
return answer
나는 if를 사용하지 않기 위해 list를 활용하여 대소 관계를 구분하였다.
그리고 a와 b의 사이 값들을 range로 구해 sum으로 합계를 구했다.
def solution(a, b):
answer = sum(range(min(a, b), max(a, b)+1))
return answer
다른 사람의 풀이를 보니 min과 max까지 이용하면 문제를 더 간단하게 풀 수 있었다.
(코드의 효율은 동일)
if를 써야하는 상황이 나오면 먼저 list와 dict먼저 생각했기 때문에 내장함수를 떠올리지 못한 것 같다.
앞으로 for나 if를 사용할 때에는 먼저 내장함수를 떠올리고, 그다음 list와 dict를 떠올리자.
"문제에 대한 접근 순서가 정해져 있어야 일관적이면서도 최적인 해결법을 찾을 수 있지 않을까."
이번 문제를 통해 새로운 엔지니어 마인드를 얻었다.
출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges
반응형
'나는 이렇게 학습한다 > Algorithm & SQL' 카테고리의 다른 글
같은 숫자는 싫어, 그리고 깨달은 세 가지 (0) | 2022.02.06 |
---|---|
나누어 떨어지는 숫자 배열 (0) | 2022.02.05 |
문자열 내 마음대로 정렬하기 (0) | 2022.02.03 |
문자열 내 p와 y의 개수 (0) | 2022.02.02 |
문자열 내림차순으로 배치하기 (0) | 2022.02.01 |