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