String str = "12345";
char ch = str.charAt(i);
int num = Character.getNumbericValue(ch);
if ( i == 0 ) {
return num; // num = 1;
} else if ( i == 4) {
return num; // num = 5;
}
String str = "loop";
str = str.replace('o', 'e');
return str; // str = "leep";
arr2 = Arrays.copyOf(arr2, arr2.length + 1);
arr2는 arr2를 arr2의 길이에 1 더한 만큼 복사한 값이다.
arr 배열의 짝수 요소만 갖는 배열 리턴.
int[] arr2 = new int[]{};
if(arr.length == 0) {
return new int[]{};
}
for(int i = 0; i < arr.length; i++) {
if(arr[i] % 2 == 0) {
arr2 = Arrays.copyOf(arr2, arr2.length + 1);
arr2[arr2.length - 1] = arr[i];
}
}
return arr2;
src - 복사할 배열
srcPos - 복사할 배열의 복사 시작 위치
dest - 복사 붙여넣기되는 배열
destPost - 복사 붙여넣기되는 배열의 복사 시작 위치
length - 복사할 요소의 개수
배열과 요소를 입력받아 주어진 요소를 배열의 맨 앞에 추가하고 해당 배열을 리턴해야 합니다.
public class Solution {
public int[] addToFront(int[] arr, int el) {
// TODO:
int[] arr2 = new int[arr.length+1];
// arr2의 길이는 el과 arr배열의 요소를 포함하기 때문에 arr의 길이에 el를 추가한 만큼의 길이를 가진다.
arr2[0] = el;
System.arraycopy(arr, 0, arr2, 1, arr.length);
//arr 배열에 0번째 인덱스부터 복사, arr2 1번째 인덱스부터 붙여넣기 -> arr.length만큼 복사
return arr2;
}
public class Solution {
public int[] getElementsAfter(int[] arr, int n) {
int[] arr2 = new int[arr.length-n];
if ((arr.length == 0)||(n>arr.length)) {
return new int[]{};
} else {
System.arraycopy(arr, n, arr2, 0, arr.length-n);
return arr2; }
}
}
arr = {4}
n = 11을 넣었을 때, 빈 배열을 리턴해야 하는데 'java.lang.NegativeArraySizeException' 에러가 발생했다.
if문에 따라 빈 배열을 리턴해야 하는거 아냐?
💡 'java.lang.NegativeArraySizeException'는 배열의 길이가 음수일 때 발생하는 에러
arr2를 선언할 때 이미 arr2의 길이를 arr.length-n으로 정해놨기 때문에 arr2의 길이는 1-11 = -10 음수로 선언되어 발생한 오류였다.
public class Solution {
public int[] getElementsAfter(int[] arr, int n) {
if ((arr.length == 0)||(n>arr.length)) {
return new int[]{};
} else {
int[] arr2 = new int[arr.length-n];
System.arraycopy(arr, n, arr2, 0, arr.length-n);
return arr2; }
}
}
arr2 선언을 if문에 하니 문제 해결
arr : 원본 배열
from : 원본 배열을 인덱스 from부터 복사(from번째 포함)
to : 원본 배열을 인덱스 to전까지 복사(to번째 미포함)
public class Solution {
public int[] getElementsAfter(int[] arr, int n) {
if (n >= arr.length) {
return new int[]{};
}
int[] result = Arrays.copyOfRange(arr, n, arr.length);
return result;
}
}
public class Solution {
public String createPhoneNumber(int[] arr) {
// TODO: head if(arr.length == 8){arr[0]~arr[2]}else if(arr.length==11){010}
// middle(arr.length-8~arr.length-5) tail(arr.length-4~arr.length-1)
//head
String head = "010";
if(arr.length == 11){
String headArr = Arrays.toString(Arrays.copyOfRange(arr, 0, 3));
head = headArr.replaceAll(" ", "").replaceAll(",", "").replace("[","").replace("]","");
}
//middle
String midArr = Arrays.toString(Arrays.copyOfRange(arr, arr.length-8, arr.length-4));
String middle = midArr.replace("[","").replaceAll(",","").replace("]","").replaceAll(" ", "");
//tail
String tailArr = Arrays.toString(Arrays.copyOfRange(arr, arr.length-4, arr.length));
String tail = tailArr.replace("[","").replaceAll(",","").replace("]","").replaceAll(" ", "");
return String.format("(%s)%s-%s", head, middle, tail);
}
}
분명 풀었던 문제였는데 하루 지나고 보니 어질어질.
나 괜찮을까..?