문제
https://school.programmers.co.kr/learn/courses/30/lessons/120923
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
풀이
알고리즘을 빠르게 풀려면.....수학적 사고가 필요하다.
연속된 수의 총합을 알기때매 첫째항을 구하기 위해 등차수열의 합 공식을 이용한다.
공차는 연속된 숫자이므로 => +1
총합은 total , n은 몇번째 항 => num 이 된다.
위의 공식에 맞게 식을 정리해보면
total = {2a + (num-1) }* num/2 가 된다. 여기서 a만 남기고 식을 정리하면 다음과 같다.
첫째항을 구했으니 길이에 맞게 배열을 반환한다!
function solution(num, total) {
//등차수열의 합 공식 이용
//식을 정리하면 첫째항 a1을 구할 수 있다.
const a = total / num - (num - 1) / 2;
return Array.from({ length: num }, (_, i) => a + i);
}
'개발 > 알고리즘(코딩테스트)' 카테고리의 다른 글
프로그래머스, 자바스크립트) 주사위 게임 3 (0) | 2024.06.07 |
---|---|
프로그래머스, 자바스크립트) 분수의 덧셈 (0) | 2024.06.06 |
프로그래머스, 자바스크립트) 다음에 올 숫자 (0) | 2024.05.16 |
프로그래머스, 자바스크립트) 최빈값 구하기 (0) | 2024.05.16 |
프로그래머스, 자바스크립트) 문자열 출력하기 (0) | 2024.05.16 |