[JAVA 문제 풀이] 161. 조건에 맞게 수열 변환하기 2

프로그래머스 (181881)
Stupefyee's avatar
Mar 27, 2025
[JAVA 문제 풀이] 161. 조건에 맞게 수열 변환하기 2
notion image
 

내가 작성한 코드 1(반복문 버전)

import java.util.*; class Solution { public int solution(int[] arr) { int count = 0; while (true) { int[] copied = Arrays.copyOf(arr, arr.length); // 배열 복사 // 조건에 맞게 배열 값 변경 for (int i = 0; i < copied.length; i++) { if (copied[i] >= 50 && copied[i] % 2 == 0) { copied[i] /= 2; } else if (copied[i] < 50 && copied[i] % 2 == 1) { copied[i] = copied[i] * 2 + 1; } } // 배열이 같으면 횟수 반환 if (Arrays.equals(arr, copied)) { return count; } // 배열이 다르면 다시 반복 (반복 횟수 증가, 배열 변경) arr = copied; count++; } } }
 

내가 작성한 코드 2 (스트림 버전)

import java.util.*; class Solution { public int solution(int[] arr) { int count = 0; // 반복 횟수 while (true) { // 현재 배열을 복사하여 이전 상태로 저장 int[] previous = Arrays.copyOf(arr, arr.length); // 배열의 각 원소에 대해 조건에 따라 변환 arr = Arrays.stream(arr) .map(i -> i >= 50 && i % 2 == 0 ? i / 2 : i < 50 && i % 2 == 1 ? i * 2 + 1 : i) .toArray(); // 이전 상태와 현재 상태가 같으면 if (Arrays.equals(previous, arr)) { break; // 반복 종료 } else { count++; // 다르면 반복 횟수 증가 } } return count; // 반복 횟수 반환 } }
 
Share article

stupefyee