CS/자료구조 & 알고리즘
[Programmers] Lv0 다음에 올 숫자 JAVA
Day-Log
2023. 1. 18. 21:19
728x90
반응형
문제 출처
[프로그래머스 코딩 테스트 연습]
https://school.programmers.co.kr/learn/courses/30/lessons/120924
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 풀이
등차수열이 아니면 등비수열이므로 등비수열과 등차수열을 구별하는 방법이 필요하다.
여기에서는 등차수열을 이용하여 이 문제를 풀 예정이다.
이후 등차 수열과 등비수열에 따라서 코드를 작성하면 된다.
등차수열인지 확인하는 방법
등차수열의 정의 : 1,3,5,7,9,⋯처럼 연속한 두 항의 차가 일정한 수열
위에서 간단하게 보면 2씩 증가하는 등차 수열이다.
즉 1, 3, 5를 봤을 때 3-1 = 2, 5-3 = 2로 인접한 차는 같다.
더 보기 : 자세한 코드 설명
더보기
코드 설명
문제의 제한 사항에서 common의 길이는 2보다 크다고 했으므로 크기는 3 이상이다.
즉 index 0, 1, 2는 무조건 있으므로 이 3개를 비교하면 된다.
1, 0 그리고 2, 1의 차를 비교하면 된다.
이때 뒤에서 앞으로 뺐으면 이후 비교할 것도 뒤에서 앞으로 빼야 한다.
public boolean isArithmeticSequence(int[] common) {
return common[1] - common[0] == common[2] - common[1];
}
다음에 올 숫자 구하기
등차 수열이라면 마지막에서 공차를 더하면 된다.
등비 수열이라면 마지막에서 공비를 곱하면 된다.
public int solution(int[] common) {
if (isArithmeticSequence(common))
return common[common.length-1] + common[1] - common[0];
else
return common[common.length-1] * (common[1]/common[0]);
}
소스 코드
public class Solution {
public boolean isArithmeticSequence(int[] common) {
return common[1] - common[0] == common[2] - common[1];
}
public int solution(int[] common) {
if (isArithmeticSequence(common))
return common[common.length-1] + common[1] - common[0];
else
return common[common.length-1] * (common[1]/common[0]);
}
}
728x90
반응형