[알고리즘]JAVA - 모의테스트, 근무자흑
- 카테고리 없음
- 2020. 8. 28.
간단한 알고리즘 모의테스트를 진행하였다.
문제를 읽었을 때의 핵심을 요구한다면.
1. 이 수열은 몇을 입력을 하든, 최소값이 1이 나온다.
2. 최소값 1이 수열의 순서와 상관없이 결과값은 항상 동일하다.
그렇다면 이제 위의 예제를 살펴보자.
2 3 1 4 입력했을 경우, 2개의 동그라미가 순서가 생긴다.
7 3 1 8 4 6 2 5 입력했을 경우 4개의 순서가 샌긴다.
여기서, 7 3 1 8 4 6 2 5와 7 3 1 8 4 6 2 5 는 반드시 있다.
그러면 7 3 1 8 4 6 2 5 는 어떤 구조이길래 결과가 3개가 아니라 4개 일까?
여러 Test 결과 이와 같았다.
7 3 1 8 4 6 2 5
7 3 1 8 4 6 2 5
7 3 1 8 4 6 2 5
7 3 1 8 4 6 2 5Α
ㅣ마지막 지정값 1개와 그 다음값 + α 일 때. 식은 이와 같아졌다.
8 3 이 입력 됐을 경우, 3 + 2 + 2 + 2가 된다.
public class Pro02
{
public static void main(String[] args) throws Exception
{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String input = br.readLine();
String[] arr = input.split(" ");
// 값 1 , 값 2 만들기 N과 K의 값
// int 배열의 총 갯수
int num1 = Integer.parseInt(arr[0]);
// int 배열 자르는 수
int num2 = Integer.parseInt(arr[1]);
// 수열 받기
input = br.readLine();
arr = input.split(" ");
int cnt = 0;
// 수의 수열 갯수 구하기
int[] arrNum = new int[arr.length];
for (int i = 0; i < arr.length; i++)
{
arrNum[i] = Integer.parseInt(arr[i]);
}
num1 -= num2;
cnt++;
while(num1 > 0)
{
num1 -= (num2-1);
cnt++;
}
System.out.println(cnt);
}
}
그래서 위와 같은 알고리즘이 나왔다.
되도록, 문제 출제에서 준 영역은 안 건들였다. 만약, 풀게 된다면 사용자에 맞게 다시 정의해도 상관 없을듯 하다.
위의 문제는 아래의 링크에서 참고 했다.
반응형