https://school.programmers.co.kr/learn/courses/30/lessons/12935
1 .
import java.util.ArrayList;
class Solution {
public static int[] solution(int[] arr) {
if (arr.length==1) {
return new int[]{-1};
}
int min = arr[0];
for (int i: arr) {
if (i <= min) {
min = i;
}
}
ArrayList<Integer> integers = new ArrayList<>();
for (int j: arr) {
integers.add(j);
}
integers.remove(min);
int[] answer = new int[integers.size()];
for (int k=0; k<answer.length; k++) {
answer[k] = integers.get(k);
}
return answer;
}
}
설명 :
integers.remove(min); 가 잘못되었습니다. 이렇게 하면 인덱스 min 번째의 값이 사라집니다.
- remove(int index): 특정 인덱스에 있는 원소를 제거합니다.
- remove(Object o): 특정 값을 가진 첫 번째 원소를 제거합니다.
따라서
integers.remove(Integer.valueOf(min)); 로 바꿔줘야 합니다. Integer.valueOf() 를 사용하면 Integer 객체가 생성됩니다.
Integer는 int 값을 감싸서 객체로서 다룰 수 있게 해줍니다. 이렇게 객체로 감싸는 이유는 기본 타입을 객체처럼 다뤄야 할 때가 있기 때문입니다. 예를 들어, 컬렉션(List, Set, Map) 같은 자료구조는 기본 타입을 직접 저장할 수 없고, 참조 타입만 저장할 수 있기 때문에, Integer 같은 객체로 변환해야 합니다.
또한 remove() 메서드에서는 첫 번째로 일치하는 원소만 제가된다는 점을 유의해야 합니다.
2.
더보기
더보기
더보기
import java.util.Arrays;
class Solution {
public static int[] solution(int[] arr) {
// 배열의 길이가 1이면 -1을 반환
if (arr.length == 1) {
return new int[]{-1};
}
// 배열에서 가장 작은 값을 찾기
int min = arr[0];
for (int i : arr) {
if (i < min) {
min = i;
}
}
// 가장 작은 값을 제외한 새로운 배열을 생성
int[] answer = new int[arr.length - 1];
int index = 0;
for (int i : arr) {
if (i != min) {
answer[index++] = i;
}
}
return answer;
}
'문제 풀이 > 프로그래머스 알고리즘' 카테고리의 다른 글
문자열 다루기 기본 // Character.isDigit() (0) | 2024.10.06 |
---|---|
약수의 개수와 덧셈 // for문 , if문 사용 + stream 사용 (0) | 2024.10.05 |
핸드폰 번호 가리기 (0) | 2024.09.30 |
나누어 떨어지는 숫자 배열 (1) | 2024.09.28 |
정수 내림차순으로 배치하기 // 반복문 안에서 collection 의 크기가 변경될 때 생기는 문제 (0) | 2024.09.27 |