문제링크
https://school.programmers.co.kr/learn/courses/30/lessons/120924
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 설명
등차수열 혹은 등비수열 common이 매개변수로 주어질 때, 마지막 원소 다음으로 올 숫자를 return 하도록 solution 함수를 완성해보세요.
제한 사항
2 < common의 길이 < 1,000
-1,000 < common의 원소 < 2,000
common의 원소는 모두 정수입니다.
등차수열 혹은 등비수열이 아닌 경우는 없습니다.
등비수열인 경우 공비는 0이 아닌 정수입니다.
입출력 예
common | result |
[1, 2, 3, 4] | 5 |
[2, 4, 8] | 16 |
입출력 예 설명
입출력 예 #1
[1, 2, 3, 4]는 공차가 1인 등차수열이므로 다음에 올 수는 5이다.
입출력 예 #2
[2, 4, 8]은 공비가 2인 등비수열이므로 다음에 올 수는 16이다.
나의 풀이
function solution(common) {
const [x,y,z]= common;
if( y-x === z-y) { //등차수열인 경우
const d= y-x; //공차
return common[common.length-1]+d;
}
else{ //등비수열의 경우
const d= y/x;//공비
return common[common.length-1]*d;
}
}
- 등차인지 등비인지만 구분해주고 각 조건문 안에 공차 또는 공비를 구해준 후 답을 리턴
- common의 길이는 3이상이기 때문에 구조분해할당으로 세 번째 원소까지 변수 할당을 해준 후, 값을 비교하여 등차수열인지 등비수열인지 검사한다.
다른 사람 풀이
function solution(common) {
if ((common[1]-common[0])==(common[2]-common[1])){
return common.pop() + common[1] - common[0];
}
else{
return common.pop()*common[1]/common[0];
}
}
- 내 풀이와 비슷하지만 common[common.length-1]로 마지막 원소를 뽑아내는 대신 pop()함수를 이용해 마지막 원소를 구해냈다.
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스 Lv.0] 안전지대 - 자바스크립트 풀이, javaScript (0) | 2023.07.22 |
---|---|
[프로그래머스 Lv.0] 연속된 수의 합 - 자바스크립트 풀이, javaScript (0) | 2023.07.22 |
[프로그래머스 Lv.0] 분수의 덧셈- 자바스크립트 풀이, javaScript (0) | 2023.07.21 |
[프로그래머스 Lv.0] OX퀴즈 - 자바스크립트 풀이, javaScript (0) | 2023.07.21 |
문제링크
https://school.programmers.co.kr/learn/courses/30/lessons/120924
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 설명
등차수열 혹은 등비수열 common이 매개변수로 주어질 때, 마지막 원소 다음으로 올 숫자를 return 하도록 solution 함수를 완성해보세요.
제한 사항
2 < common의 길이 < 1,000
-1,000 < common의 원소 < 2,000
common의 원소는 모두 정수입니다.
등차수열 혹은 등비수열이 아닌 경우는 없습니다.
등비수열인 경우 공비는 0이 아닌 정수입니다.
입출력 예
common | result |
[1, 2, 3, 4] | 5 |
[2, 4, 8] | 16 |
입출력 예 설명
입출력 예 #1
[1, 2, 3, 4]는 공차가 1인 등차수열이므로 다음에 올 수는 5이다.
입출력 예 #2
[2, 4, 8]은 공비가 2인 등비수열이므로 다음에 올 수는 16이다.
나의 풀이
function solution(common) {
const [x,y,z]= common;
if( y-x === z-y) { //등차수열인 경우
const d= y-x; //공차
return common[common.length-1]+d;
}
else{ //등비수열의 경우
const d= y/x;//공비
return common[common.length-1]*d;
}
}
- 등차인지 등비인지만 구분해주고 각 조건문 안에 공차 또는 공비를 구해준 후 답을 리턴
- common의 길이는 3이상이기 때문에 구조분해할당으로 세 번째 원소까지 변수 할당을 해준 후, 값을 비교하여 등차수열인지 등비수열인지 검사한다.
다른 사람 풀이
function solution(common) {
if ((common[1]-common[0])==(common[2]-common[1])){
return common.pop() + common[1] - common[0];
}
else{
return common.pop()*common[1]/common[0];
}
}
- 내 풀이와 비슷하지만 common[common.length-1]로 마지막 원소를 뽑아내는 대신 pop()함수를 이용해 마지막 원소를 구해냈다.
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스 Lv.0] 안전지대 - 자바스크립트 풀이, javaScript (0) | 2023.07.22 |
---|---|
[프로그래머스 Lv.0] 연속된 수의 합 - 자바스크립트 풀이, javaScript (0) | 2023.07.22 |
[프로그래머스 Lv.0] 분수의 덧셈- 자바스크립트 풀이, javaScript (0) | 2023.07.21 |
[프로그래머스 Lv.0] OX퀴즈 - 자바스크립트 풀이, javaScript (0) | 2023.07.21 |