문제 설명
정수 배열 arr가 주어집니다. arr의 각 요소는 0 이상 9 이하의 정수로 이루어져 있습니다.
이때, 정수 배열 arr의 요소 중 홀수를 반복하고 나머지 요소를 오른쪽으로 shift 한 결과를 출력하는 프로그램을 작성하세요.
단, 이 과정에서 기존의 배열의 길이보다 바깥쪽으로 밀려난 숫자들은 제거합니다. 즉, 출력 배열은 입력 배열과 길이가 같습니다.
입력 형식
· arr : 정수로 이루어진 배열
출력 형식
· 입력 배열과 동일한 크기의 정수 배열
제약 사항
· 0 < arr.length <= 1000
· 0 <= arr[i] <= 9
입출력 예시
· 입력
· arr = {0, 2, 1, 4, 3, 0}
· 출력 : {0, 2, 1, 1, 4, 3}
· 설명 : 홀수인 1을 두 번 반복하였으며, 이로 인해 밖으로 밀려난 0은 배열에서 사라졌다.
작성 코드
import java.util.Arrays;
public class Solution222 {
public int[] solution(int[] arr) {
int[] result = new int[arr.length];
int cnt = 0;
for (int i = 0; i < result.length; i++) {
if (arr[i] % 2 == 0) {
if (result[result.length -1] != 0) {
break;
}
result[cnt] = arr[i];
cnt++;
} else if (arr[i] % 2 == 1) {
result[cnt] = arr[i];
cnt++;
if (result[result.length -1] != 0) {
break;
}
result[cnt] = arr[i];
cnt++;
}
}
return result;
}
public static void main(String[] args) {
Solution222 st = new Solution222();
int[] arr = {0, 2, 1, 4, 3, 0};
System.out.println(Arrays.toString(st.solution(arr)));
}
}
정답 코드
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
class Solution {
public int[] solution(int[] arr) {
// 결과값을 저장할 ArrayList 객체 'result' 생성
List<Integer> result = new ArrayList<>();
int i = 0;
// result 리스트의 길이가 arr 배열의 길이보다 작을 때까지 반복
while (result.size() < arr.length) {
result.add(arr[i]); // arr 배열의 i번째 원소를 result 리스트에 추가
if (arr[i] % 2 == 1 && result.size() < arr.length) {
result.add(arr[i]);
}
i++;
}
// result 리스트를 int 배열로 변환하여 반환
return result.stream() // result 리스트를 스트림으로 변환
// 스트림은 컬렉션 요소를 하나씩 처리하는데 유용
.mapToInt(x->x) // 리스트의 각 요소를 int형으로 매핑
// 이 메소드는 x를 int형으로 변환하여 반환하는 람다식을 전달받는다.
.toArray(); // 스트림에서 처리된 요소를 int 배열로 변환
}
public static void main(String[] args) {
Solution st = new Solution();
int[] arr = {0, 2, 1, 4, 3, 0};
System.out.println(Arrays.toString(st.solution(arr)));
}
}
'연습 코딩테스트' 카테고리의 다른 글
연습문제 2-2(4) 술래가 빼간 구슬의 번호 (0) | 2023.04.06 |
---|---|
연습문제 2-2(3) n 이하인 세제곱 수 (0) | 2023.04.06 |
연습문제 2-2(1) 전체 사용한 전기 요금 (0) | 2023.04.05 |
연습문제 2-1(5) 두 배열에 모두 존재하는 숫자 (0) | 2023.04.05 |
연습문제 2-1(4) 중복을 제외한 단어의 수 (0) | 2023.04.05 |