코드업에 JAVA 100제가 없어 프로그래머스로 연습 중입니다.
배운 점이 있다면 남깁니다.
class Solution {
public int[][] solution(int[][] arr1, int[][] arr2) {
int nRow = arr1.length;
int nCol = arr1[0].length;
// 크기 초기화 안해도 되나? -> 해야되네 ㅋㅋ
int[][] answer = new int[nRow][nCol];
for (int i = 0; i < arr1.length; i++) {
for ( int j = 0; j < arr1[0].length; j++) {
answer[i][j] = arr1[i][j] + arr2[i][j];
}
}
return answer;
}
}
(double) (sum / arr.length);
는 나누기 후 캐스팅이라 무조건 x.0으로 나오더라.
class Solution {
public double solution(int[] arr) {
double answer = 0;
int sum = 0;
for (int num : arr) {
sum += num;
}
answer = (double) sum / arr.length;
return answer;
}
}
String str
이 주어지면
char[] charArray = str.toCharArray();
char 배열 형성, 원하는 문자열 연산 후
String answer = new String(charArray);
charArray to String 가능
class Solution {
public String solution(String phone_number) {
char[] answerCharArray = phone_number.toCharArray();
for (int i = 0; i < phone_number.length() - 4; i++) {
answerCharArray[i] = '*';
}
String answer = new String(answerCharArray);
return answer;
}
}
Arrays.copyOfRange(array,start,end);
라는 메서드가 있다.
2차원 배열의 경우
for (int[] info : commands) {
int i = info[0];
int j = info[1];
int k = info[2];
}
이런 식으로 배열을 한 줄씩 뽑아서 이용하면 훨씬 가독성 좋은 코드가 된다.
public int[] solution(int[] array, int[][] commands) {
int[] answer = new int[commands.length];
//TODO for로 감싸기
for (int x = 0; x < commands.length; x++) {
int end = commands[x][1];
int start = commands[x][0];
int getKey = commands[x][2];
int lengthOfTmpArray = end - start + 1;
int[] tmpArray = new int[lengthOfTmpArray];
int j = 0;
for (int i = start - 1; i < end; i++) {
tmpArray[j++] = array[i];
}
Arrays.sort(tmpArray);
answer[x] = tmpArray[getKey - 1];
}
return answer;
}
// Arrays.copyOfRange(); 사용하면
tmpArray = Arrays.copyOfRange(array, start - 1, end);
// foreach로 배열 빼는건 SKIP... ㅋㅋㅋㅋㅋ