https://school.programmers.co.kr/learn/courses/30/lessons/181881?language=python3
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
Algorithm
Idea
이전 배열에 연산 이전 값을 저장하고 연산후와 비교하는 과정을 반복한다.
Python
def solution(arr):
answer = 0
idx = 0
prev = arr
while True:
change = []
for i in prev:
if i > 50 and i % 2 == 0:
change.append(i / 2)
elif i < 50 and i % 2 == 1:
change.append(i * 2 + 1)
else: change.append(i)
same = all(a == b for a, b in zip(prev,change))
if same:
break
idx += 1
prev = change
return idx
Java
import java.util.Arrays;
class Solution {
public int solution(int[] arr) {
int count = 0;
int[] beforeArr = arr.clone();
while (true) {
int[] change = beforeArr.clone();
for (int i = 0; i < beforeArr.length; i++) {
if (beforeArr[i] % 2 == 0 && beforeArr[i] >= 50) {
change[i] = beforeArr[i] / 2;
} else if (beforeArr[i] % 2 != 0 && beforeArr[i] < 50) {
change[i] = beforeArr[i] * 2 + 1;
}
}
if (Arrays.equals(beforeArr, change)) {
break; // 배열에 변화가 없으면 종료
}
count++;
beforeArr = change;
}
return count;
}
}
'자료구조&알고리즘 > 프로그래머스' 카테고리의 다른 글
[Programmers] 직사각형 넓이 구하기 (PYTHON, JAVA) (0) | 2024.03.31 |
---|---|
[Programmers] 소인수분해 (PYTHON, JAVA) (0) | 2024.03.07 |
[Programmers] 점프와 순간 이동 (JAVA, PYTHON) (0) | 2023.11.03 |
[Programmers] 영어 끝말잇기 (JAVA, PYTHON) (1) | 2023.11.03 |
[Programmers] 소수 만들기 (JAVA, PYTHON) (0) | 2023.11.03 |