[프로그래머스] 코딩테스트 연습 -> 연습문제 -> 제일 작은 수 제거하기
https://school.programmers.co.kr/learn/courses/30/lessons/12935
해결 과정
처음에는 배열에서 어떤 원소를 제거해야 한다고 하여, StringBuilder를 써야 하나 싶었다.
하지만 사용하지 않고 한번 풀어봤더니 풀리는 방법을 찾을 수 있었다.
먼저 arr의 길이가 1일 경우를 먼저 제거해 준다. 이때는 answer 배열을 그냥 -1만 갖도록 초기화 해주면 된다.
다음 위 조건이 걸리지 않았을 때의 answer 배열을 다시 선언해 주는데, 이때 배열의 길이는 arr의 길이에서 원소 하나가 제거된 길이일 것이므로 -1을 해준다. 또한 제일 작은 값을 찾기 위해 arr의 원소 중 하나로 min을 선언하여 초기화해준다.
다음 반복문으로 돌면서 배열 arr에서 min 값을 찾아준다.
그렇다면 마지막으로 answer배열을 채워보도록 하겠다.
일단 answer배열의 인덱스를 책임져 줄 변수 k를 선언한다.
다음 반복문을 돌면서 하나씩 채워주면 되는데, arr배열에 min 값이 있다면 answer에는 그 값을 넣으면 안된다.
이걸 식으로 정리하여 arr[i] == min 일 때는, continue를 사용하여 answer에 추가하는 과정을 건너뛰어 준다.
딱히 위 조건문에 걸리지 않으면 단순히 answer[k++] 를 해주면서 arr의 원소를 하나씩 넣어주면 된다.
마지막으로 answer을 return 하면 풀이가 완료된다.
소스 코드
class Solution {
public int[] solution(int[] arr) {
if (arr.length == 1 ) {
int[] answer = {-1};
return answer;
}
int[] answer = new int[arr.length-1];
int min = arr[0];
for (int i=0; i<arr.length; i++) {
if (arr[i] < min) {
min = arr[i];
}
}
int k = 0;
for (int i=0; i<arr.length; i++) {
if (arr[i] == min) {
continue;
}
answer[k++] = arr[i];
}
return answer;
}
}
'JAVA > Programmers' 카테고리의 다른 글
JAVA 프로그래머스 [수박수박수박수박수박수?] 자바 Lv.1 (0) | 2023.08.05 |
---|---|
JAVA 프로그래머스 [가운데 글자 가져오기] 자바 Lv.1 (0) | 2023.08.05 |
JAVA 프로그래머스 [없는 숫자 더하기] 자바 Lv.1 (0) | 2023.08.04 |
JAVA 프로그래머스 [핸드폰 번호 가리기] 자바 Lv.1 (0) | 2023.08.03 |
JAVA 프로그래머스 [음양 더하기] 자바 Lv.1 (0) | 2023.08.03 |
댓글