"반에서 가장 키 작은 애를 알려줘, 그리고 만약에 반에 아무도 없으면 없다고 알려줘"
문제의 조건은 이러했다. 자 그러면 1시간동안 작성한 코드를 보자
function findSmallestElement(arr) { // your code here if(arr.length === 0) {return 0;} else { let lil = arr[0]; for (i = 0; i < arr.length; i++) { if ( lil > arr[i]) { lil = arr[i]; } } return lil; } }
매우 간단하지 아니한가. 하지만 이 친구는 나와 수요일 저녁을 함께 불태워줬다.
문제를 토대로 논리를 생각해보았다.
if (arr.length === 0) { return 0;}
- `arr.length`: 배열의 길이를 구하는 함수(반 학생의 총원을 구한다)
arr[0]
)를 김릴(변수lil
)이라고 일단 부를게 else {
let lil = arr[0];
for구문
) 어떻게? for (i = 0; i < arr.length; i++) {
arr[i]
) 반복하면서 확인할 때(if구문
), if ( lil > arr[i]) {
lil = arr[i];
}
return
) } return lil;
lil > arr[i]
→ arr[i] > lil
로 변경하면 된다위 문제를 풀고나서 사용된 코드가 굉장히 유용하다고 느꼈다. 궁금함을 참지 못하고 구글링을 하던 중, 문제에서 사용된 코드의 알고리즘이 Binary Search Tree 라는 걸 알게 되었다. 그래서 그게 뭔데?
유용하다. 굉장히 유용하다. 그리고 어렵다.