class Solution {
public int solution(int[] arr) {
int answer = 0;
int count = 0;
int[] beforArr = new int[arr.length];
while(count != arr.length) {
count = 0;
beforArr = arr.clone();
for(int i =0; i<arr.length; i++) {
if(arr[i]%2 == 0 && arr[i] >= 50) {
arr[i] /= 2;
}else if(arr[i]%2 != 0 && arr[i] < 50) {
arr[i] = arr[i]*2 +1;
}
if(arr[i] == beforArr[i] ) count ++;
}
answer ++;
}
return answer-1;
}
}
- 항상 코딩을 잘했다고 생각했을때 실수를 해서 시간을 잡아먹는다.
- 주어지는 배열의 길이와 같은 배열을 하나 선언한다
- 반복문 카운트가 배열의 길이와 같아질때까지
- 카운트 0으로 초기화
- 비교할 배열에 기존 배열 깊은복사
- 반복문 배열의 길이 만큼
- 조건문 문제에서 제시하는 조건으로
- 모두 처리가 되면 전배열과 현배열의 요소 비교 같으면 카운트++;
- 카운트의 갯수가 배열의 길이와 똑같다면 배열 두개가 똑같아진거다.
- answer로 숫자를 세고 있었으니 answer에서 -1을 해주면 최소 반복값이 나온다. 끝.
오늘은 연봉이 얼마인가요?
풀이 잘 보고 배워갑니다!