프로그래머스 코딩테스트중 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 |