Skip to main content

25. [Java] 조건에 맞게 수열 변환하기 1

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

  • 정수 배열 arr가 주어진다.
  • arr의 각 원소에 대해 값이
    → 50보다 크거나 같은 짝수라면 2로 나누고,
    → 50보다 작은 홀수라면 2를 곱한다.
  • 그 결과인 정수 배열을 return

  • 1 ≤ arr의 길이 ≤ 1,000,000
  • 1 ≤ arr의 원소의 값 ≤ 100

정답코드

  • arr[i] >= 50 and 짝수 → arr[i] / 2
  • arr[i] < 50 and 홀수 → arr[i] * 2
  • 그 외는 원래 값 유지
class Solution {
    public int[] solution(int[] arr) {
        int[] result = new int[arr.length];
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] >= 50 && arr[i] % 2 == 0) {
                result[i] = arr[i] / 2;
            } else if (arr[i] < 50 && arr[i] % 2 == 1) {
                result[i] = arr[i] * 2;
            } else {
                result[i] = arr[i]; // 나머지는 그대로
            }
        }
        return result;
    }
}

오답

class Solution {
    public int[] solution(int[] arr) {
        int[] result = new int[arr.length];
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] >= 50 && arr[i] % 2 == 0) {
                result[i] = arr[i] / 2;
            } else if (arr[i] < 50 && arr[i] % 2 == 1) {
                result[i] = arr[i] * 2;
            }
        }
        return result;
    }
}

image.png

처음에 제출한 코드에서는 두 조건 (>= 50 && 짝수, < 50 && 홀수)만 처리하고 그 외 조건들을 고려하지 않아서, 나머지 값이 0으로 설정되는 문제(초기값)가 발생했다. 마지막에 else 블럭 하나 더 설정해서 분기점 1,2에 해당하지 않으면 기존 배열에 있던 해당 인덱스의 요소 값을 그대로 가져와서 result[]에 추가하는 코드를 추가해서 해결했다.

else {
    result[i] = arr[i]; // 나머지는 그대로
}