반응형
알고리즘
JAVA 프로그래머스 제일 작은 수 제거하기
1. 문제
https://programmers.co.kr/learn/courses/30/lessons/12935
2. 풀이
썩 효율적인 방법이라 생각이 들지 않지만 풀 수만 있다면..
class Solution {
public int[] solution(int[] arr) {
// 숫자가 1개인 배열은 -1 return
if(arr.length == 1) {
int[] answer = new int[] {-1};
return answer;
}
int[] answer = new int[arr.length-1];
int min = 0;
//
for (int i = 0; i < arr.length; i++) {
if(arr[min] > arr[i]) min = i;
}
// arr[0]부터 다시 숫자채우기
for(int i=min+1;i<arr.length;i++){
arr[i-1] = arr[i];
}
for(int i=0;i<answer.length;i++){
answer[i] = arr[i];
}
return answer;
}
}
[다른사람의 풀이 1]
Arrays.sort로 정렬하고, ArrayList를 이용하여 푸는 방법.
import java.util.ArrayList;
import java.util.Arrays;
public class solution {
public int[] solution(int[] arr) {
// sort를 이용해서 최솟값 가져오기
int[] temp = arr.clone();
Arrays.sort(temp);
int min = temp[0];
//ArrayList를 이용하여 최솟값과 같지 않은 수만 추가
ArrayList<Integer> list = new ArrayList<Integer>();
for (int i = 0; i < arr.length; i++) {
if(arr[i] != min) {
list.add(arr[i]);
}
}
int[] answer;
// 경우를 나눠서 배열에 값을 저장하기
if(list.size() == 0) {
answer = new int[1];
answer[0] = -1;
} else {
answer = new int[list.size()];
for (int i = 0; i < list.size(); i++) {
answer[i] = list.get(i);
}
}
return answer;
}
}
[다른사람의 풀이2]
ArrayList를 이용하여 풀었고, Collections.min()을 이용하여 최소값을 찾음
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
class Solution {
public int[] solution(int[] arr) {
int[] answer = {};
if (arr.length == 1) {
answer = new int[]{-1};
} else {
List<Integer> list = new ArrayList<>();
for (int a : arr)
list.add(a);
list.remove(Collections.min(list));
answer = new int[arr.length - 1];
for (int i = 0; i < list.size(); i++)
answer[i] = list.get(i);
}
return answer;
}
}
반응형
'알고리즘 > Java' 카테고리의 다른 글
[python] ACM호텔(10250) (0) | 2021.12.25 |
---|---|
[python] 백준 더하기 사이클(1110) (0) | 2021.12.25 |
[JAVA] 프로그래머스 이상한 문자 만들기 (0) | 2021.11.12 |
[JAVA] 프로그래머스 완주하지 못한 선수 (0) | 2021.11.12 |
[JAVA] 프로그래머스 로또의 최고 순위와 최저 순위 (0) | 2021.11.12 |