ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 5월 30일 화요일 TIL 회고록
    카테고리 없음 2023. 5. 30. 21:45

    프로그래머스 코딩테스트 Lv 1 


    같은 숫자는 싫어

    문제 설명, 제한 사항 및 입출력 예

    풀이 및 해설

    import java.util.ArrayList;
    import java.util.List;
    
    public class Solution {
        public List<Integer> solution(int []arr) {
                int[] answer = {};
                List<Integer> list = new ArrayList<>();
                 list.add(arr[0]);
    
                for(int i = 0; i < arr.length -1; i++) {
                   if(arr[i] != arr[i+1]) {
                       list.add(arr[i+1]);
                   }
                }
            
            // [실행] 버튼을 누르면 출력 값을 볼 수 있습니다.
            System.out.println("Hello Java");
    
            return list;
        }
    }

    int[] answer는 사용하지 않았다.

    정수를 받는 List를 만들어 준 후 arr[0]을 list에 넣어준다. 넣어주는 이유는 위에 입출력 예를 보면 for문을 사용해 arr[i]번째와 arr[i+1] 값을 비교해줄건데 arr[0]이 1이고 arr[1]이 1이면 값이 들어가지 않아서(둘이 같은 숫자이기 때문에) 먼저 list에 arr[0]의 값을 넣어주었다.

    그 다음 반복문을 사용했다. 반복문 조건에 i < arr.length -1 까지 조건을 넣어줬는데, 이유는 -1을 해주지 않으면 arr[i + 1]을 해줄때 

    i값이 초과되어 ArrayIndexOutOfBoundsException이 나오기 때문이다. 

    그 후 if문을 사용해 arr[i]의 값과 arr[i+1]의 값이 같지 않을 시 arr[i+1] 값을 list에 넣어주었다.

     

    실행 결과

    정확성은 쏘쏘한데 효율성이 너무 낮다... ㅋㅋㅋㅋ....


    오늘 이거도 풀어보려고 했는데 개같이 실패했다..

    .split을 사용해서 [try, hello, world]로 자르기는 했지만 그 후가 문제였다.. [[try].[hello].[world]]로 만들 수 있으면 for문을 사용해서

    .toUpperCase로 소문자를 대문자로 바꿀 수 있을 것 같은데 [[try].[hello].[world]] < 이렇게 만들기가 정말 안된다.. 미치겠다

    구글링을 해보면서 해야하나.. 레벨 1 코딩테스트도 이제 어려운 것들만 남은 것 같다. 쉽지않다 ㅋㅋㅋ..

     

Designed by Tistory.