[TIL] 23.03.29 int 배열을 리스트 , 관련 알고리즘 문제

hyewon jeong·2023년 3월 29일
0

TIL

목록 보기
111/138

1. 프로그래머스.제일 작은 수 제거하기


2 문제


3 풀이

  1. 배열을 -> 리스트로 for문을 이용해 변경한다.
  2. 기존 배열은 오름차순한다. (만약에 배열을 먼저 오름차순을 한후 리스트로 변경하면 , 리스트값도 또한 추후 오름차순으로 정렬되어 기존 배열에가진 순서가 무너지므로 리스트를 먼저 저장하는 것이다.
  3. 오름차순 된 배열에서 가장 작은값은 arr[0] 이된다.
    arrList.remove(arrList.indexOf(arr[0]);
  4. stream의 maptoInt()를 이용하여 integer 타입을 int 타입으로 변환 후 배열형태로 출력한다.
  5. 만약에 배열의 길이가 0이면 -1 반환하도록 if 문 사용

4 소스 코드

import java.util.*;
import java.util.stream.Collectors;

class Solution {
 public int[] solution(int[] arr) {
        int[] answer = {};
        List<Integer> arrList = new ArrayList<>();
        for (int a : arr) {
          arrList.add(a);
        }
        // 배열 오름차순 정렬
        Arrays.sort(arr);
        //배열->리스트

        arrList.remove(arrList.indexOf(arr[0]));
        // list -> array
        answer = arrList.stream().mapToInt(i->i).toArray();
        //배열 길이가 1인 경우 -1 반환
        if(answer.length == 0){
          answer = new int[]{-1};

        }
    
        return answer;
      }
    }

5. 관련 공부

5-1 int[] 배열 -> 리스트 변환

int[] arr = {4,3,2,1};
//배열 -> 리스트 
List<Integer> arrList = new ArrayList<>(Arrays.asList(arr));
//List<Integer> arrList = Arrays.asList(arr); 으로 하지 않는 이유는 기존 arr배열이 변하면 list도 동기화되어 값이 변한다. 
System.out.println(arrList)

위의 경우 컴파일 에러가 나간다.
이유는 Arrays.asList() 는 참조형일때 사용가능 하기 때문에 arr이 int형으로 에러가 난다.
string타입의 경우는 사용가능하다.
그러므로 아래의 방식을 이용한다.

5-1-1. for 문 이용하여 int[] 배열 -> 리스트 List<Integer> 변환

int[] arr = {4,3,2,1};
LIst<Integer> arrList = new ArrayList<>();
//배열 -> 리스트 
for(int a : arr){
arrList.add(a);
}
//리스트 출력
System.out.println(arrList)
//리스트 오름차순 정렬
Collections.sort(arrList);
//리스트 내림차순 정렬
Collections.sort(arrList, Collections.reversOrder());

5-2 Integer 리스트 ->int[] 배열 변환

List<Integer> arrList = new ArrayList<>(Arrays.asList(10,20,30);
int[] arr = arrList.stream().mapToInt(i->i).toArray();
//배열 출력
System.out.println(Arrays.toString(arr));
//오름차순 
Arrays.sort(arr);
//내림차순
Arrays.sort(arr, Collections.reverseOrder());
profile
개발자꿈나무

0개의 댓글