-
[프로그래머스] 제일 작은 수 제거하기 | 배열, 리스트 | 코딩테스트알고리즘 2023. 8. 9. 16:36
[배열 풀이]
class Solution { public int[] solution(int[] arr) { /* 리턴하려는 배열이 빈 배열인 경우 -> 배열 내부에 원소가 1개만 있다면 가장 작은 수를 제거했을 경우 갯수가 0개다. 빈 배열이 된다. arr은 길이가 1이상인 배열 */ if(arr.length == 1) { return new int[] {-1}; } int min = Integer.MAX_VALUE; // int 중에서 가장 큰 값 for(int num : arr) { //System.out.println(num); System.out.println(min + " " + num); if(min > num) { //직전까지의 최소값이 num보다 크다면 min = num; //num을 min에 할당 } } System.out.println("최소값 : " + min); int[] newArr = new int[arr.length - 1]; //가장 작은 수 1개를 뺀 배열 //다시 한 번 int index=0; // 새로운 배열에 넣을 인덱스 for(int a : arr) { //min이 아닌 배열만 System.out.print(a); if(a==min) { //System.out.println(a + "는 최소값이다!"); //최소값일 경우에는 index++이 작동하지 않아서 해당 인덱스는 다음에 다시 사용함 } else { newArr[index++] = a; } } return newArr; } }
[리스트 풀이]
import java.util.*; // 자바에서 유용한 기능들... class Solution { // 2. ArrayList public int[] solution(int[] arr) { if (arr.length == 1) { return new int[] {-1}; } // 가장 작은 수 비교해주기 위해서 integer 가장 큰 값 int min = Integer.MAX_VALUE; // 배열 -> 리스트로 변환 // 배열이랑 비슷한데 add, remove같은 걸로 삭제/추가가 가능한 자료형 ArrayList<Integer> list = new ArrayList<Integer>(); for (int i = 0; i < arr.length; i++) { // 리스트에다가 추가를 할 건데... list.add(arr[i]); // 리스트에다가 기존의 배열 원소를 넣고... // add로 원소를 맨 끝에 '추가' if (min > arr[i]) { min = arr[i]; } } // 변환 코드만 좀 들어간 것. // 리스트에서 특정한 값(value)의 인덱스를 찾는 메서드 // -> min값으로 index를 찾고요. // System.out.println(list.indexOf(min)); // 최소값의 인덱스. list.remove(list.indexOf(min)); // 인덱스를 통해서 값을 '제거' int[] newArr = new int[list.size()]; // size를 통해서 길이(length) for (int i = 0; i < newArr.length; i++) { newArr[i] = list.get(i); // list.get(인덱스) } return newArr; } }
'알고리즘' 카테고리의 다른 글
[백준]11651번: 좌표 정렬하기 2 | 배열 정렬, 람다식 | 코딩테스트 (0) 2023.08.10 [프로그래머스] k번째 수 | 정렬 | 코딩테스트 (0) 2023.08.09 [백준]개수 세기 | 배열 | 코딩테스트 (0) 2023.08.09 [프로그래머스]문자열 내 p와 y의 개수 : chatGPT의 활용방안까지 - 코딩테스트 (0) 2023.08.09 2. 탐색과 정렬 (0) 2023.08.09