조건에 맞게 수열 변환하기2 - 프로그래머스(자바)

강신찬·2023년 5월 11일
0
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을 해주면 최소 반복값이 나온다. 끝.
profile
꾸준히 공부하는 백엔드 개발자

1개의 댓글

comment-user-thumbnail
2023년 5월 14일

오늘은 연봉이 얼마인가요?
풀이 잘 보고 배워갑니다!

답글 달기

관련 채용 정보