프로그래머스 풀이/level1
[Programmers] level 1) 문제 '두 정수 사이의 합' 풀이
진기명기
2023. 5. 12. 15:27
🫠 Programmers (level 1) 👉🏻 문제 12번 (두 정수 사이의 합)
✏️ 문제 설명
두 정수 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
function solution(a, b) {
// for문 범위 값을 위한 배열 생성
let arr = []
arr.push(a, b)
arr.sort((a,b) => a-b)
let res = []
for(let i = arr[0]; i <= arr[1]; i++) {
res.push(i)
}
return res.reduce((acc, item) => acc + item, 0)
}
✅ sort()를 통해 오름차순을 하여 순서를 정렬
✅ for문의 범위값으로 오름차순 했던 배열을 사용 (arr[0]번째가 더 작은 수!)
✅ reduce()로 배열 값 모두 더해줌!
💡 확인할 점
🫠 나는 sort()로 a, b의 값을 비교했지만, 아래처럼 하면 더 쉬울 것 같다..! Math를 쓸까도 고민했지만 배열을 만들어 내 눈으로 확인해서 값을 대입하는 게 더 편했다(왜일까,, 코드만 더 길어질 뿐인데..!)
// 1번 방법
for(let i = Math.min(a,b); i <= Math.max(a,b); i++) {
res.push(i)
}
// 2번 방법
{
...
let s = 0
for(let i = Math.min(a,b); i <= Math.max(a,b); i++) {
s += i
}
return s
}
💡 Math.min() & Math.max()로 값 비교하여 for문에 값을 넣어도 좋다!
💡 1번 방법과 같지만 임의의 숫자값 s를 만들어 계속 더해줘도 된다.