20231122 TIL 작성

김민석·2023년 11월 22일
0

1. 계획

  • 코드카타 참여 (알고리즘 문제 2개 이상 풀기)
  • 입문주차 강의 듣기
  • 입문주차 개인과제 해설영상 보고 제작

2. 문제점

  • 알고리즘 문제에서 코드 실행 실패 및 런타임 에러 발생
  • 문법 이해의 미숙함

3. 보완할 점

  • for문과 while문, 그리고 Collection 사용법 숙달

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문으로 바꾼 코드 : 진행방식(?)을 좀 더 구체적으로 풀어내 설명하는 듯한 코드가 되었음.

나는 아직 한참 모자라고 미숙하다...

profile
개발자가 되고 싶지만 허덕이는 으른이

0개의 댓글