알고리즘 문제 풀이

[TIL] Javascript 알고리즘 100일 챌린지 23번째 도전

whale3 2023. 5. 25. 23:08

 

정수 배열과 어떤 정수가 주어지면 그 배열에서 정수와 가장 가까운(차이가 적게 나는) 숫자를 찾아 리턴하는 문제였다. 

 

요소를 하나씩 보면서 주어진 정수에서 뺀 다음에 Math.abs 를 사용해서 절대값으로 바꾼 다음 변수를 하나 만들어서 그 뺀 값을 기록해 두었다. 이미 있던 값보다 더 적은 값이 나오면 교체해주고. 

 

나는 minus 변수를 처음 선언할때 문제에서 주어진 배열, 정수의 범위를 보고 999를 할당했던건데 Math.infinity 를 사용하면 가장 큰 숫자를 얻을 수 있다. 

 

그리고 뺀 값이 같은 요소가 여러 개면 그 중 작은 것을 리턴해야 하기 때문에 아래처럼 if 문을 두었는데, 주어진 배열을 sort 먼저 해주면 if를 사용하지 않아도 된다. 다만 sort로 배열을 한번 봐주고, 반복문으로 배열을 또 한 번 봐주는 것보다 나는 한 번만 반복문을 돌면서 그 안에서 다 해결하는 방법을 더 선호한다. 

 

물론 여기서는 배열 사이즈가 작으니까 상관 없지만 배열 사이즈가 크다면 sort와 반복문의 사용으로 배열을 두 번 보는 것이 괜찮을까 싶다

 

 

 

 

https://youtu.be/i1wU42bVbbA

 

반응형