카테고리 없음

[프로그래머스] 조건에 맞게 수열 변환하기 2 (Java, Python)

garamdev 2025. 7. 25. 11:30

문제

https://school.programmers.co.kr/learn/courses/30/lessons/181881

 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

코드(Java)

class Solution {
    public int solution(int[] arr) {
        int answer = 0;
		int[] prevArr = arr.clone();
		int[] nextArr = arr.clone();
		int n = arr.length;
		
		while (true) {
			boolean changed = false;
			for (int i = 0; i < n; i++) {
				int val = nextArr[i];
				int newVal;
				if (val >= 50 && val % 2 == 0) {
					newVal = val / 2;
				} else if (val < 50 && val % 2 != 0) {
					newVal = val * 2 + 1;
				} else {
					newVal = val;
				}
				if (newVal != val) changed = true;
				nextArr[i] = newVal;
			}
			if (!changed) break;
			answer++;
		}
        return answer;
    }
}

 

코드(Python)

def solution(arr):
    answer = 0
    next_arr = arr[:]
    n = len(arr)
    while True:
        changed = False
        for i in range(n):
            val = next_arr[i]
            if val >= 50 and val % 2 == 0:
                new_val = val // 2
            elif val < 50 and val % 2 != 0:
                new_val = val * 2 + 1
            else:
                new_val = val
            if new_val != val:
                changed = True
            next_arr[i] = new_val
        if not changed:
            break
        answer += 1
    return answer
728x90