프로그래머스 코딩테스트중 level1에 해당하는 문제이다.
level1이고 딱보기에 쉬워보여 막 들이댔다가 큰코다쳤다....
문제를 잘못파악해서 정렬된 상태로 풀뻔했기 때문...!
익숙한 ArrayList로 풀고싶었지만 단순 배열을 사용하고 순수 코딩만을 이용하는 것이 좋을 것 같아 최대한 배열과 코딩으로만 풀고자 했다.
배열만으로 코딩을 하는 것이 너무 오랜만이라 좀 헷갈렸다.
class Solution {
public int[] solution(int[] arr) {
int[] answer = {};
if(arr.length==1) {
answer=new int[1];
answer[0]=-1;
return answer;
}
int min=arr[0];
for(int i=0;i<arr.length;i++){
if(arr[i]<min){
min=arr[i];
}
}
answer=new int[arr.length-1];
int j=0;
for(int i=0;i<answer.length;i++){
if(arr[j]==min) {
j++;
i--;
continue;
}
answer[i]=arr[j];
j++;
}
return answer;
}
}
이문제의 풀이에서는 중요한 점은 contiune와 이에 영향받는 i,j를 적절하게 조절하는 것이다.
특히 i부분이 헷갈릴 수 있다.
i는 for문을 조절하는 변수이고 j는 단순 변수임을 계속 명심해야한다.
i는 for문에 의하여 한번 돌면 계속 증가하기 때문에, min을 만났을 때 증가하지 않고 그 index를 유지하고 싶다면 i--연산이 필수이다.
하지만 j는 for문 한번을 돌때마다 증가해줘야하고 min을 만났을 때는 코드 앞쪽에서 한번더 증가해주어야 한다.
어렵진 않지만 꽤나 헷갈리는 문제!
'Computer Engineering > 알고리즘 테스트' 카테고리의 다른 글
프로그래머스 코딩테스트 문제: K번째수 (0) | 2020.03.06 |
---|---|
프로그래머스 코딩테스트 문제: 완주하지 못한 선수 (0) | 2020.03.06 |
프로그래머스 코딩테스트 문제: 폰켓몬 (0) | 2020.03.05 |
프로그래머스 코딩테스트 문제: 주식가격 (0) | 2020.03.04 |
프로그래머스 코딩테스트 문제: 탑 (0) | 2020.02.09 |