●문제: 제일 작은 수 제거하기
문제 링크:
https://school.programmers.co.kr/learn/courses/30/lessons/12935
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
소스코드:
https://github.com/NHclub/algorithm/blob/main/src/_06_18/Problem26.java
★문제 해결 접근 아이디어
오름차순으로 정렬 후 첫 번째 요소 제거.
- 첫 번째 실패
아마 정렬하는 과정에서 원래 있던 요소들의 위치가 변경되어서 실패가 뜨는 것 같음.
재시도: 정렬 후 첫 번째 요소의 값만 취득 후 원래 배열에서 그 값만 제외한 값을 answer 할당 하기 - 두 번째 실패
런타임 에러 발생 허나 이유를 찾지 못함..
재시도: 디버깅을 통해 여러 테스트 케이스 확인해보기
int Min = lsArr.get(0);
for (int i = 0; i < arr.length; i++) {
if (Min == arr[i]){
continue;
}else{answer[i] = arr[i];}
}
Min 값과 arr[i]의 값이 같으면 건너뛰는 과정에서 answer에 값이 생략되게 됨.
예를 들어 5 크기를 가진 배열에 Min 값이 3번째에 있다면 반복문은 3을 건너뛰게 되면서 answer[3] 값은 할당되지 못했는데 answer[4]를 할당하려 하니 ArrayIndexOutOfBoundsException이 발생함
재시도: answer인덱스를 따로 선언해서 else 구문이 실행 되면 answer의 인덱스를 증가 시키기
해결 완료.
다른 사람 풀이 보고 느낀점:
배열을 돌면서 최솟값을 저장하는 알고리즘을 보고 놀람.. 최솟값 찾을 때 많이 유용할 알고리즘일 것 같음
int minIndex=0;
for(int i=0;i<arr.length;i++){
if(arr[minIndex]>arr[i]){
minIndex = i;
}
'Java > AlgorithmPS' 카테고리의 다른 글
프로그래머스) 3진법 뒤집기 자바 문제 풀이 (1) | 2023.06.19 |
---|---|
프로그래머스) 하샤드 수 자바 문제 풀이 (0) | 2023.06.18 |
프로그래머스) 콜라츠 추측 자바 문제 풀이 (1) | 2023.06.18 |
23-06-17 Java 문제 풀이 (1) | 2023.06.18 |
23-06-16 Java 문제 풀이 (0) | 2023.06.18 |