1. 계획
2. 문제점
3. 보완할 점
4. 오늘의 공부
class Solution {
public int[] solution(int[] arr) {
if(arr.length == 1){
int[] answer = {-1};
return answer;
}
int[] answer = new int[arr.length-1];
int min = arr[0];
for(int i=0; i<arr.length; i++){
if(min>arr[i]){
min = arr[i]
}
}
for(int i=0; i<answer.length; i++){
if(arr[i] == min){
continue;
}
answer[i] = arr[i];
}
return answer;
}
}
내가 짠 코드 : 최소값이 여러개인 경우 continue부분에서 모두 지워지는 코드라 answer에 null값이 들어가게 됨. (프로그래머스 채점 시 런타임 에러 발생 -> 채점코드에서 int형 배열값과 null값을 비교해버리기 때문)
여기서 2번째 for문을 튜터님께 질문 후 수정.
int index = 0;
for(int i=0; i<arr.length; i++){
if(arr[i] == min){
continue;
}
answer[index] = arr[i];
index++;
}
튜터님이 수정해주신 코드 : answer의 index 값을 추가. continue로 넘어가면 index값이 변하지 않아 null값은 없어짐.
int arrIndex = 0;
int answerIndex = 0;
while(arrIndex < arr.length){
if(arr[arrIndex] == min){
arrIndex++;
continue;
}
answer[answerIndex] = arr[arrIndex];
arrIndex++;
answerIndex++;
}
for문을 while문으로 바꾼 코드 : 진행방식(?)을 좀 더 구체적으로 풀어내 설명하는 듯한 코드가 되었음.
나는 아직 한참 모자라고 미숙하다...