코딩테스트 풀이/JAVA
[프로그래머스/Lv.0] 조건에 맞게 수열 변환하기 2
무지맘
2023. 5. 1. 22:55
1. Input, Output, Example
arr의 각 원소에 대해 값이 50보다 크거나 같은 짝수라면 2로 나누고, 50보다 작은 홀수라면 2를 곱하고 다시 1을 더한다. 이러한 작업을 x번 반복한 결과인 배열을 arr(x)라고 표현했을 때, arr(x) = arr(x + 1)인 x가 항상 존재한다.
- 이러한 x 중 가장 작은 값을 반환
2. Constraint
1) 1 ≤ arr의 길이 ≤ 1,000,000
2) 1 ≤ arr의 원소의 값 ≤ 100
3. Code
1) 첫 코드(2023/05/01)
class Solution {
public int solution(int[] arr) {
int answer = 0;
boolean find = false;
while(!find){
answer++;
int[] copied = new int[arr.length];
System.arraycopy(arr, 0, copied, 0, arr.length);
for(int i=0 ; i<arr.length ; i++){
if(arr[i]>=50 && arr[i]%2==0)
arr[i] /= 2;
else if(arr[i]<50 && arr[i]%2==1)
arr[i] = arr[i]*2 +1;
}
boolean check = true;
for(int i=0 ; i<arr.length ; i++)
check = check && (arr[i]==copied[i]);
if(check) find = true;
}
return answer-1;
}
}