카테고리 없음

5월 30일 화요일 TIL 회고록

tft4rollz 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 코딩테스트도 이제 어려운 것들만 남은 것 같다. 쉽지않다 ㅋㅋㅋ..