본문 바로가기
개발공부/프로그래머스

프로그래머스 제일 작은 수 제거하기 (js/자바스크립트)

by 또깽판 2022. 1. 19.

 

내가 작업한 코드 (실패)

var arr = [1,3,5,4,8]

function solution(arr) {
    var answer = [];
    for (let i=0; i<arr.length; i++){
      answer.push(arr[i])
      answer.sort((a,b)=>b-a)
    } 
     
     if(answer.length == 1){
        answer = -1
      } else{
        answer.pop()
      }
  
    return answer;
}


solution(arr)

 

ㄴ 이렇게 실행하는 경우에 , 최소의 값이 중복으로 들어가 있는경우에 마지막 배열값만 삭제(answer.pop() )만 삭제되는 함수를 썼음. 진짜 실패 요인은  중복값을 찾을 수가 없어서 실패 sort 함수를 써줘서 배열의 순서가 뒤바뀜 

ㄴ그리고, 문제상에서는 중복값의 조건이 없긴 했지만 있었다면!!!!!!!

  만약에 최소값이 중복이다! ex ) var arr = [1,1,3,5,76,8] 

  이런경우 출력은 [1,3,5,76,8] 제일 마지막 값 삭제 후에 출력되기 때문에 오답이였을꺼임  

  좋은 방법은 아니라서 다른 방법으로 진행 

 

변수명.pop() : 마지막 배열값 삭제하는 함수 

출처: https://gent.tistory.com/295

 

다시 컨닝해서 ㅎ 제출한 답안

var arr = [1,3,5,76,8]


function solution(arr) {
    var answer = [];
    if(arr.lengt<=1) return [-1]

    var min = Math.min(...arr); 
    var answer = arr.indexOf(min);

    arr.splice(answer,1);
    return arr;
}

solution(arr)

문제풀이 

- 최소값 찾는 함수 및 사용 (

  ㄴ사용방법 : Math.min (최소값 찾아야하는 변수명) )

  ㄴ 여기서  Math.min(...arr)로 쓴 이유는 arr 변수가 배열로 되어 있기 때문에 꼭 ...arr 사용해줘야해

- 찾는 숫자의 자리가 어디인지를 찾는 함수

  ㄴ사용방법 : (자리 찾아야하는 변수명).indexOf(찾아야하는 변수)

  ㄴ 여기서 arr 이라는 배열안에서 최소값이 몇번째에 있는지 찾아야하기때문에 

      arr.indexOf(min) 로 작성!

 

참고 블로그 

https://velog.io/@surim014/%EC%9B%B9%EC%9D%84-%EC%9B%80%EC%A7%81%EC%9D%B4%EB%8A%94-%EA%B7%BC%EC%9C%A1-JavaScript%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80-part-7-Object-35k01xmdfp

 

 

댓글