프로그래머스 Lv.0 다음에 올 숫자

등차수열 혹은 등비수열 common이 매개변수로 주어질 때,
마지막 원소 다음으로 올 숫자를 return하라.
common의 원소는 모두 정수이고,
등차수열 혹은 등비수열이 아닌 경우는 없다.
** 풀이 방법
common 배열이 등차수열인지 등비수열인지
검증할 ArrayList를 생성했다.
먼저 연속된 두 원소의 차를 ArrayList에 저장한다.
List<Integer> cha = new ArrayList<>();
for (int i=0; i<common.length-1; i++) {
cha.add(common[i+1]-common[i]);
}
ArrayList에 저장된 값이 모두 같으면 등차수열
같지 않으면 등비수열이므로
for (int i=0; i<cha.size()-1; i++) {
if (cha.get(i) == cha.get(i+1))
cnt++;
//등차수열이라면 cnt가 cha.size()-1과 같아짐
else
bi = common[1]/common[0];
//등비수열의 공비를 구함
}
등차수열일 때는 공차를 common의 마지막 원소에 더해준다.
등비수열일 때는 연속된 두 원소를 나눈 몫이 공비가 된다.
마찬가지로 common의 마지막 원소에 공비를 곱해준다.
if (cnt == cha.size()-1) answer = common[common.length-1] + cha.get(0); //등차
else answer = common[common.length-1] * bi; //등비
<> 전체 코드 </>
import java.util.*;
class Solution {
public int solution(int[] common) {
int answer = 0;
List<Integer> cha = new ArrayList<>();
int bi = 0;
int cnt = 0;
for (int i=0; i<common.length-1; i++) {
cha.add(common[i+1]-common[i]);
}
for (int i=0; i<cha.size()-1; i++) {
if (cha.get(i) == cha.get(i+1))
cnt++;
else
bi = common[1]/common[0];
}
if (cnt == cha.size()-1) answer = common[common.length-1] + cha.get(0);
else answer = common[common.length-1] * bi;
return answer;
}
}
반응형
'개발로그 > 알고리즘' 카테고리의 다른 글
프로그래머스 Lv.0 진료순서 정하기 (0) | 2023.07.21 |
---|---|
프로그래머스 Lv.0 가까운 수 (0) | 2023.07.20 |
프로그래머스 Lv.0 리스트 자르기 (0) | 2023.07.17 |
프로그래머스 Lv.0 전국 대회 선발 고사 (1) | 2023.07.17 |
프로그래머스 Lv.0 이진수 더하기 (0) | 2023.07.15 |
댓글