첫번째 시도
하나씩 더하는 것이기 때문에, 이 경우에는 엄청나게 숫자가 크다면 오래걸릴 수 밖에 없다
function solution(a, b) {
let answer=0
if(a>b){
[a,b]=[b,a] // a가 b보다 크다면 a와 b값 체인지
}
for(let i=a;i<=b;i++){
answer+=i // 계속 더해주기
}
return answer
}
더보기
테스트 1 〉 | 통과 (0.05ms, 29.8MB) |
테스트 2 〉 | 통과 (0.06ms, 30.1MB) |
테스트 3 〉 | 통과 (0.06ms, 29.9MB) |
테스트 4 〉 | 통과 (25.86ms, 32.7MB) |
테스트 5 〉 | 통과 (19.53ms, 32.6MB) |
테스트 6 〉 | 통과 (16.12ms, 32.7MB) |
테스트 7 〉 | 통과 (8.63ms, 32.5MB) |
테스트 8 〉 | 통과 (12.30ms, 32.6MB) |
테스트 9 〉 | 통과 (12.58ms, 32.6MB) |
테스트 10 〉 | 통과 (3.66ms, 32.2MB) |
테스트 11 〉 | 통과 (0.23ms, 30.1MB) |
테스트 12 〉 | 통과 (0.58ms, 30.2MB) |
테스트 13 〉 | 통과 (0.24ms, 30.1MB) |
테스트 14 〉 | 통과 (0.10ms, 30MB) |
테스트 15 〉 | 통과 (0.07ms, 30.2MB) |
테스트 16 〉 | 통과 (0.11ms, 30.1MB) |
두번째 시도
다른사람의 풀이 댓글에 갓 가우스 어쩌구를 보고 해당 풀이는 풀지 않은 채 풀어보았다
function solution(a, b) {
let answer=0
if((a-b)%2===0||(a-b)!==0){ //a-b가 짝수인 경우(사이에 있는 수의 갯수가 홀수가 됨)
return (Math.abs(a-b)/2+0.5)*(a+b)// 하나는 짝이 없기때문에 0.5를 했다
}
else{
return(Math.abs(a-b)*(a+b))//사이에있는 수의 갯수가 짝수이기때문에 그냥(a-b)만큼 (a+b)곱해주면 됨
}
}
더보기
테스트 1 〉 | 통과 (0.04ms, 30.1MB) |
테스트 2 〉 | 통과 (0.04ms, 29.8MB) |
테스트 3 〉 | 통과 (0.05ms, 30MB) |
테스트 4 〉 | 통과 (0.04ms, 30.2MB) |
테스트 5 〉 | 통과 (0.04ms, 30MB) |
테스트 6 〉 | 통과 (0.05ms, 30.2MB) |
테스트 7 〉 | 통과 (0.04ms, 29.8MB) |
테스트 8 〉 | 통과 (0.04ms, 30.1MB) |
테스트 9 〉 | 통과 (0.04ms, 29.8MB) |
테스트 10 〉 | 통과 (0.05ms, 30.1MB) |
테스트 11 〉 | 통과 (0.13ms, 30MB) |
테스트 12 〉 | 통과 (0.05ms, 30.1MB) |
테스트 13 〉 | 통과 (0.04ms, 30.1MB) |
테스트 14 〉 | 통과 (0.04ms, 30MB) |
테스트 15 〉 | 통과 (0.04ms, 30MB) |
테스트 16 〉 | 통과 (0.07ms, 30.3MB) |
세번째 시도
또 댓글을 보니 등차수열 어쩌고 있길래 풀이를 보지않고 풀어보았다
function solution(a, b) {
if(a>b){
[a,b]=[b,a]//(a가 b보다 크다면 둘의 값 스위치)
}
return (b-a+1)*(b-a+2)/2+(a-1)*(b-a+1)
// (b-a)를 하게되면 총 갯수보다1개가 부족하다
// 예 3,5 일때 3,4,5 총 3개이지만 (b-a)는 2인걸 볼 수 있다
//등차수열의 합 n(n+1)/2를 이용하여 (b-a+1)*(b-a+2)/2
// 상수의 합은 상수의 갯수 상수*n이지만 등차수열은 1부터 시작했을때 n*n+1/2이기 때문에
// 상수*n -> (a-1)*(b-a+1)로 하였다
}
더보기
테스트 1 〉 | 통과 (0.04ms, 30.2MB) |
테스트 2 〉 | 통과 (0.04ms, 30MB) |
테스트 3 〉 | 통과 (0.08ms, 30.1MB) |
테스트 4 〉 | 통과 (0.04ms, 30.1MB) |
테스트 5 〉 | 통과 (0.05ms, 30MB) |
테스트 6 〉 | 통과 (0.04ms, 30.1MB) |
테스트 7 〉 | 통과 (0.04ms, 30.2MB) |
테스트 8 〉 | 통과 (0.04ms, 30.2MB) |
테스트 9 〉 | 통과 (0.07ms, 30MB) |
테스트 10 〉 | 통과 (0.05ms, 29.9MB) |
테스트 11 〉 | 통과 (0.06ms, 29.7MB) |
테스트 12 〉 | 통과 (0.05ms, 30.1MB) |
테스트 13 〉 | 통과 (0.04ms, 29.9MB) |
테스트 14 〉 | 통과 (0.05ms, 30MB) |
테스트 15 〉 | 통과 (0.04ms, 30MB) |
테스트 16 〉 | 통과 (0.04ms, 30MB) |
'알고리즘 > 프로그래머스 문제-JS' 카테고리의 다른 글
[JS]가운데 글자 가져오기 (0) | 2022.05.31 |
---|---|
[JS]같은 숫자는 싫어 (0) | 2022.05.31 |
[JS]정수 내림차순으로 배치하기 (0) | 2022.05.23 |
[JS&Python]자연수 뒤집어 배열로 만들기 (0) | 2022.04.26 |
[JS&Python]정수 제곱근 판별 (0) | 2022.04.23 |