프로그머스 다음에 올 숫자 0단계 문제 입니다!
https://school.programmers.co.kr/learn/courses/30/lessons/120924
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
● 문제 설명
등차수열 혹은 등비수열 common이 매개변수로 주어질 때, 마지막 원소 다음으로 올 숫자를 return 하도록 solution 함수를 완성해보세요.
<<제안사항>>
1) 2 < common의 길이 < 1,000
2) -1,000 < common의 원소 < 2,000
3) 등차수열 혹은 등비수열이 아닌 경우는 없습니다.
4) 공비가 0인 경우는 없습니다.
● 내가 직접 짜본 코드
class Solution {
public int solution(int[] common) {
int answer = 0;
//등차수열
if((common[1]-common[0]) == (common[2]-common[1])){
answer = common[common.length-1]+common[1]-common[0];
}
//등비수열
else{
if(common[0]==1){ //common[0]이 1일때 예외처리
answer=common[common.length-1] * (common[2]-common[1]);
}
else{
answer = common[common.length-1] * (common[1]-common[0]);
}
}
return answer;
}
}
● 코드 해설
1) 첫번째 if문을 통해 등차수열을 계산하고
2) 두번째 if문으로 등비수열을 계산하는데
3) common[0]이 1일때 예외상황이라고 판단이 되어 따로 예외처리를 해줬습니다.
그런데... 제가 봐도 너무 끼워 맞췄다는 느낌이 들더라구요ㅠㅠㅠ
그래서 도움 요청을 해봤더니
이렇게 해결방법이 있더라고요!! 이런 방법은 상상도 하지 못했던 ㅠㅠ
● 개선한 코드
class Solution {
public int solution(int[] common) {
int answer = 0;
//등차수열
if((common[1]-common[0]) == (common[2]-common[1])){
answer = common[common.length-1]+common[1]-common[0];
}
//등비수열
else{
answer = common[common.length-1] * (common[1]/common[0]);
}
return answer;
}
}
이렇게 하니 코드가 더욱 간단해지더라고요...
왜 몰랐을까 하염없이 후회했습니다 ㅎㅎㅎ
'CodingTest' 카테고리의 다른 글
프로그레머스 - 약수 구하기 (JAVA) (0) | 2023.01.05 |
---|---|
프로그래머스 - 머쓱이보다 키 큰 사람 (JAVA) (0) | 2023.01.05 |
프로그래머스 - 최댓값 만들기 (JAVA) (0) | 2023.01.03 |
프로그래머스 - 7의 개수(JAVA) (0) | 2023.01.03 |
프로그래머스 - 숫자 찾기 (JAVA) (0) | 2022.12.29 |