https://programmers.co.kr/learn/courses/30/lessons/12935
참고하고 푼것:
접근법
숫자가 들어있는 배열이 들어갔을때 최소값을 찾는것과 어떻게하면 그 최소값을 배열에서 뺄수있을까 먼저 생각하였다.
이때 그전까지 써보지 않았던 reduce 메서드를 사용하여 입력한 배열의 인덱스 값들을 차례대로 검사하며 min 이라는 곳에 조건에 따른 값을 넣을려고 했다. 이떄 최소값을 넣어야하므로 비교값이 참이라면 큰수를 넣으면 안되니 acc(예전값, 누적값)을 넣어주고, 비교값이 false 가나오면 cur 이 더 작은것이므로 cur(최근값)을 min에 넣어주려고했다.
코드 해석
2줄. 문제에서 제한을 두었던게 배열의 크기가 1이거나 []일때는 [-1]을 리턴하라고 요구했기때문에, 만약 입력값이 이 조건에 만족한다면 [-1]만 return 하고 함수를 종료한다.
3줄. 최소값을 담을 변수 min을 만들어줌.
4줄. reduce를 이용하여 acc(예전값,누적값) 와 cur(현재값)을 비교하는 function을 arrow 함수로 줄여 썼다. 또한 그 안에 삼한 연산자로 조건문을 썼는데 min 변수에 cur과 acc을 비교했을때 참이면 acc을, 거짓이면 cur을 min에 넣어 최소값을 구했다.
5줄. 최소값을 구했기때문에 최소값을 제외한 배열을 return 해야하는데 이때 filter를 하여 ()안에 해당하는 조건을 만족하는 값들만 arr 배열에 남기고 충족하지않은건 지워준다. element 같은경우 arr.filter이므로 arr의 인덱스값들을 순서대로 filter 해주는것이다. => 를 써 아까 넣어준 min 과 arr의 배열안의 값들을 비교해서 만약 같지 않다면 그대로 두고, 같다면 제거하는것이다.
'공부 > 알고리즘&자료구조' 카테고리의 다른 글
항해99 문제27번풀이 (콜라츠 추측,프로그래머스) (0) | 2021.11.11 |
---|---|
항해99 문제33번풀이 (로또의 최고 순위와 최저 순위,프로그래머스) (0) | 2021.11.11 |
항해99 문제24번풀이 (정수 내림차순으로 배치하기,프로그래머스) (0) | 2021.11.10 |
항해99 문제22번풀이 (자릿수 더하기,프로그래머스) (0) | 2021.11.10 |
항해99 문제20번풀이 (완주하지 못한 선수,프로그래머스) (0) | 2021.11.10 |