[Wecode] Repl.it - 16. findSmallestElement

hang_kem_0531·2022년 4월 27일
0

wecode

목록 보기
7/28
post-thumbnail

❓ 문제

findSmallestElement 함수를 구현해 주세요.

  • findSmallestElement 의 arr 인자는 숫자 값으로만 이루어진 배열입니다.

  • arr 의 값들 중 가장 작은 값을 리턴 해주세요.

  • 만일 arr 가 비어있으면 0을 리턴 해주세요.

  • 예를 들어, 다음과 같은 배열이 인자(input)으로 들어왔다면 1이 리턴 되어야 합니다.

    [20, 200, 23, 1, 3, 9]

✍ 내 풀이

1차 풀이

function findSmallestElement(arr) {
  let sNumber = arr[0];
  for (i=0; i < arr.length; i++) {
      if (arr[i] < sNumber) {
        sNumber = arr[i];
      } else if (arr.length === 0) {
        return 0;
      }       
    } return sNumber;   
  }

array의 인자 중에서 가장 작은 값을 리턴해 주어야 하기 때문에, 가상의 최솟값을 sNumber라는 변수에 할당해 주고, for문으로 배열의 0번째 인덱스부터 sNumber와 비교하여 sNumber보다 작을 경우 가장 작은값으로 리턴되게 하였다. 만일 arr가 비어있는 경우(arr.length === 0), 0을 리턴하였다.

결과

  test3
Stack Trace:
Error: expect(received).toBe(expected) // Object.is equality

Expected: 0
Received: undefined
    at Object.<anonymous> (/home/runner/16-for-mun-Kyeom1997/_test_runnertest_suite.js:7:37)
    at Object.asyncJestTest (/home/runner/16-for-mun-Kyeom1997/node_modules/jest-jasmine2/build/jasmineAsyncInstall.js:106:37)
    at /home/runner/16-for-mun-Kyeom1997/node_modules/jest-jasmine2/build/queueRunner.js:45:12
    at new Promise (<anonymous>)
    at mapper (/home/runner/16-for-mun-Kyeom1997/node_modules/jest-jasmine2/build/queueRunner.js:28:19)
    at /home/runner/16-for-mun-Kyeom1997/node_modules/jest-jasmine2/build/queueRunner.js:75:41
    at processTicksAndRejections (internal/process/task_queues.js:97:5)


✅  test2

✅  test1

지금 코드를 살펴보니 바보같은 코드를 짠 거 같다. arr가 비어있을때 0을 리턴하려면 arr가 비어있는 경우를 먼저 선언했어야 했는데 결국 마지막에 리턴한 sNumber 값이 나와서 0이 나오지 않고 undefined가 나와버렸다.

2차 풀이

function findSmallestElement(arr) {
  if (arr.length === 0) {
    return 0;
  } else {
    let sNumber = arr[0];
    for (i=0; i < arr.length; i++) {
      if (arr[i] < sNumber) {
        sNumber = arr[i];
      }       
    } return sNumber;   
  } 
}

결과

✅  test3

✅  test2

✅  test1

  All tests have passed 3/3  

깔끔띠하게 통과!

결론

처음에는 솔직히 arr가 비어있는 경우 0을 리턴하라는 예제만 풀고, 최솟값을 어떻게 리턴해야 할지 몰라서 한참을 고민했었다. 어제 늦게까지 이거 붙잡고 있다가 결국 에라이 하고 집에 갔으니까.. 그리고 오늘 아침에 와서 옆자리 형석님이 같은 문제 풀고 계시길래 여쭤봤다가 인자 하나를 여럿이랑 비교해야 한다는 힌트를 얻고 머릿속에 전구가 켜지는 기분이었다. 아직 다방면으로 문제를 접근하는 시각을 길러야 겠다고 느낀 순간이었다.

profile
Front-End Developer

0개의 댓글