조건에 맞게 수열 변환하기 1
날짜 | 2023-10-18 |
사용 언어 | Java |
문제 유형 | 반복문, 배열 |
정답률 | 89% |
문제 URL | https://school.programmers.co.kr/learn/courses/30/lessons/181882 |
문제 #
문제 설명 #
정수 배열 arr
가 주어집니다. arr
의 각 원소에 대해 값이 50보다 크거나 같은 짝수라면 2로 나누고, 50보다 작은 홀수라면 2를 곱합니다. 그 결과인 정수 배열을 return 하는 solution 함수를 완성해 주세요.
제한사항 #
- 1 ≤
arr
의 길이 ≤ 1,000,000- 1 ≤
arr
의 원소의 값 ≤ 100
- 1 ≤
나의 풀이 #
class Solution {
public int[] solution(int[] arr) {
int[] answer = new int[arr.length];
int i = 0;
for(int n : arr) {
if(n>=50 && n%2==0) n = n/2;
else if(n<50 && n%2!=0) n = n*2;
answer[i++] = n;
}
return answer;
}
}
새로운 배열을 생성하는 대신 기존 배열을 수정하는 방식으로 작성 가능
class Solution {
public int[] solution(int[] arr) {
for (int i = 0; i < arr.length; i++) {
if (arr[i] >= 50 && arr[i] % 2 == 0) {
arr[i] = arr[i] / 2;
} else if (arr[i] < 50 && arr[i] % 2 == 1) {
arr[i] = arr[i] * 2;
}
}
return arr;
}
}
다른 사람의 풀이 #
import java.util.*;
class Solution {
public int[] solution(int[] arr) {
return Arrays.stream(arr).map(operand -> operand >= 50 && operand % 2 == 0 ? operand / 2 : operand < 50 && operand % 2 == 1 ? operand * 2 : operand).toArray();
}
}
삼항 연산자를 풀어 쓸 경우
.map(operand -> {
if (operand >= 50 && operand % 2 == 0) return operand / 2;
else if (operand < 50 && operand % 2 == 1) return operand * 2;
else return operand;
})
테스트 | 결과 |
---|---|
테스트 1 〉 | 통과 (2.10ms, 72.8MB) |
테스트 2 〉 | 통과 (3.17ms, 70.7MB) |
테스트 3 〉 | 통과 (2.59ms, 72MB) |
테스트 4 〉 | 통과 (2.47ms, 72.5MB) |
테스트 5 〉 | 통과 (2.27ms, 72.2MB) |
테스트 6 〉 | 통과 (2.66ms, 79.7MB) |
테스트 7 〉 | 통과 (2.79ms, 75.9MB) |
테스트 8 〉 | 통과 (2.68ms, 70.7MB) |
테스트 9 〉 | 통과 (25.77ms, 82.8MB) |
테스트 10 〉 | 통과 (21.17ms, 150MB) |
테스트 11 〉 | 통과 (9.30ms, 93.9MB) |