정수 배열과 어떤 정수가 주어지면 그 배열에서 정수와 가장 가까운(차이가 적게 나는) 숫자를 찾아 리턴하는 문제였다.
요소를 하나씩 보면서 주어진 정수에서 뺀 다음에 Math.abs 를 사용해서 절대값으로 바꾼 다음 변수를 하나 만들어서 그 뺀 값을 기록해 두었다. 이미 있던 값보다 더 적은 값이 나오면 교체해주고.
나는 minus 변수를 처음 선언할때 문제에서 주어진 배열, 정수의 범위를 보고 999를 할당했던건데 Math.infinity 를 사용하면 가장 큰 숫자를 얻을 수 있다.
그리고 뺀 값이 같은 요소가 여러 개면 그 중 작은 것을 리턴해야 하기 때문에 아래처럼 if 문을 두었는데, 주어진 배열을 sort 먼저 해주면 if를 사용하지 않아도 된다. 다만 sort로 배열을 한번 봐주고, 반복문으로 배열을 또 한 번 봐주는 것보다 나는 한 번만 반복문을 돌면서 그 안에서 다 해결하는 방법을 더 선호한다.
물론 여기서는 배열 사이즈가 작으니까 상관 없지만 배열 사이즈가 크다면 sort와 반복문의 사용으로 배열을 두 번 보는 것이 괜찮을까 싶다

반응형
'알고리즘 문제 풀이' 카테고리의 다른 글
[TIL] Javascript 알고리즘 100일 챌린지 25번째 도전 (0) | 2023.05.28 |
---|---|
[TIL] 🤞Javascript 알고리즘 100일 챌린지 24번째 도전 (0) | 2023.05.26 |
[TIL] Javascript 알고리즘 100일 챌린지 22번째 도전 (0) | 2023.05.24 |
[TIL] Javascript 알고리즘 100일 챌린지 21번째 도전 (0) | 2023.05.23 |
[TIL] Javascript 알고리즘 100일 챌린지 20번째 도전 (0) | 2023.05.21 |