728x90
코드 힌트
- 초기화와 플래그 설정
- result 변수는 연산 횟수를 기록하며, flag는 배열의 변화를 감지하는 데 사용됩니다.
- 이 반복문은 배열이 더 이상 변하지 않을 때까지 실행됩니다.
- 조건에 따른 배열 요소 수정
- 첫 번째 조건: 배열 요소가 50 이상이면서 짝수일 때, 해당 요소를 절반으로 나눕니다.
- 두 번째 조건: 배열 요소가 50 미만이면서 홀수일 때, 해당 요소를 두 배로 하고 1을 더합니다.
- 각 조건이 만족되면, 배열이 변한 것이므로 flag를 false로 설정하여 반복을 계속하도록 합니다.
- 반복 횟수 증가
- 매번 반복이 끝날 때마다 result를 증가시켜 연산 횟수를 기록합니다.
- 최종 결과 반환
- 마지막 반복이 완료된 후에는 실제 연산 횟수에서 1을 뺀 값을 반환합니다. 이는 마지막 반복에서 배열에 변화가 없었기 때문에 그 시점의 result는 필요 없습니다.
정답은 더보기 클릭
더보기
class Solution {
public int solution(int[] arr) {
int result = 0; // 연산 횟수를 저장할 변수
boolean flag = false; // 배열이 더 이상 변화하지 않는지 확인하기 위한 플래그
// 배열이 더 이상 변화하지 않을 때까지 반복
while (!flag) {
flag = true; // 매 반복 시 플래그를 true로 설정
for (int i = 0; i < arr.length; i++) {
// 현재 요소가 50 이상이고 짝수인 경우
if (arr[i] >= 50 && arr[i] % 2 == 0) {
arr[i] /= 2; // 요소를 절반으로 나눈다
flag = false; // 배열이 변화했으므로 플래그를 false로 설정
}
// 현재 요소가 50 미만이고 홀수인 경우
else if(arr[i] < 50 && arr[i] % 2 == 1) {
arr[i] = arr[i] * 2 + 1; // 요소를 두 배로 하고 1을 더한다
flag = false; // 배열이 변화했으므로 플래그를 false로 설정
}
}
result++; // 반복이 끝날 때마다 연산 횟수 증가
}
return result-1; // 최종적으로 연산 횟수에서 1을 빼서 반환
}
}
728x90
'프로그래머스(Java) > Level 0' 카테고리의 다른 글
[프로그래머스] 특정 문자열로 끝나는 가장 긴 부분 문자열 찾기 (0) | 2024.08.13 |
---|---|
[프로그래머스] 1로 만들기 (0) | 2024.08.12 |
[프로그래머스] 빈 배열에 추가, 삭제하기 (0) | 2024.08.08 |
[프로그래머스] 날짜 비교하기 (0) | 2024.08.08 |
[프로그래머스] 옹알이 (1) (0) | 2024.08.08 |