<문제 제시>
<문제설명>
1. 등차수열 혹은 등비수열이 배열로 주어질 때
2. 주어진 배열의 마지막 원소 다음에 올 숫자를 return
>> Point - 배열의 끝원소 접근 = array[array.length - 1]
<예시 입출력>
<문제 해결 과정>
등차수열은 증가값이 +로 이루어진 수열이다.
등비수열은 증가값이 *으로 이루어진 수열이다.
결국 마지막 원소에서 이어나가 그 다음 원소를 맞추는 문제이다.
규칙을 먼저 찾는 것이 중요했다.
등차수열인지 등비수열인지부터 알기 위해서 원소의 값들을 비교해야했다.
int answer = 0;
int diff = 0;
if((common[1] - common[0]) == (common[2] - common[1])){
diff = common[1] - common[0];
answer = common[common.length - 1] + diff;
}
else if((common[1] / common[0]) == (common[2] / common[1])){
diff = common[1] / common[0];
answer = common[common.length - 1] * diff;
}
diff 변수로 그 배열의 규칙(등차수열 or 등비수열)을 찾아내었다.
그렇다면 그 차이(diff)만큼 마지막 원소에 더해주거나, 곱해주면 되는 것이었다.
<전체코드>
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class next_num {
public static int solution(int[] common) {
int answer = 0;
int diff = 0;
if((common[1] - common[0]) == (common[2] - common[1])){
diff = common[1] - common[0];
answer = common[common.length - 1] + diff;
}
else if((common[1] / common[0]) == (common[2] / common[1])){
diff = common[1] / common[0];
answer = common[common.length - 1] * diff;
}
return answer;
}
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int[] data = {1,2,3,4};
System.out.println(solution(data));
}
}
배열의 규칙을 찾는 과정이 간단하게 표현될 수 있다는 것을 알 수 있었다.
물론 등차수열, 등비수열의 간단한 규칙이 큰 도움이되었지만, 흐름을 알기에는 좋은 문제였다.
문제링크)
https://school.programmers.co.kr/learn/courses/30/lessons/120924
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
'Algorithms > 프로그래머스' 카테고리의 다른 글
[프로그래머스] '외계행성의 나이' - Java (1) | 2023.04.16 |
---|---|
[프로그래머스] 'OX 퀴즈' - Java (0) | 2023.04.16 |
[프로그래머스] '최빈값 구하기' - Java (0) | 2023.02.24 |
[프로그래머스] '양꼬치' - Java (1) | 2023.02.23 |
[프로그래머스] '분수의 덧셈' - Java (0) | 2023.02.23 |