[Wecode] Repl.it - 17. divideArrayInHalf 함수

hangkemiii·2022년 4월 27일
0

wecode

목록 보기
8/26
post-thumbnail

문제

divideArrayInHalf 함수를 다음과 같이 구현해주세요.

  • divideArrayInHalf 함수는 array를 인자로 받습니다. 이 array는 숫자 값으로 만 구성되어 있으며 총 5개의 요소(element)들로 구성되어 있습니다.

  • divideArrayInHalf 함수는 인자로 들어온 array 로 부터 새롭게 구성된 배열 result 을 리턴합니다.

  • array 요소들 중 10과 같거나 작은 값의 요소들은 result의 맨 앞으로, 10보다 큰 값의 요소들은 result의 맨 뒤로 재구성된 배열을 리턴 해주세요.

  • 재구성이 되는 순서는 array의 맨 뒤 요소부터 맨 앞 요소까지 입니다. 즉, 배열의 뒷 요소 부터 재구성을 진행해주세요.

  • 예를 들어, 인자로 들어오는 array가 다음과 같을 때,

    [1, 20, 10, 5, 100]

    result 배열이 만들어 지는 순서는 다음과 같습니다.
[100]
[5, 100]
[10, 5, 100]
[10, 5, 100, 20]
[1, 10, 5, 100, 20]

따라서 아래와 같은 result가 리턴 되어야 합니다.

[1, 10, 5, 100, 20]

내 풀이

1차 풀이

function divideArrayInHalf(array){
  let result = [];
  for(let i=0; i < array.length; i++){
    if(array[i] <= 10){
      result.unshift(array[i]);
    } else {
      result.push(array[i]);
    }
  }
return result;
}

결과

node v12.16.1

❌  test1
Stack Trace:
Error: expect(received).toEqual(expected) // deep equality

- Expected  - 3
+ Received  + 3

  Array [
-   1,
-   10,
    5,
-   100,
+   10,
+   1,
    20,
+   100,
  ]
    at Object.<anonymous> (/home/runner/17-baeyeol-jojaghagi-Kyeom1997/_test_runnertest_suite.js:8:52)
    at Object.asyncJestTest (/home/runner/17-baeyeol-jojaghagi-Kyeom1997/node_modules/jest-jasmine2/build/jasmineAsyncInstall.js:106:37)
    at /home/runner/17-baeyeol-jojaghagi-Kyeom1997/node_modules/jest-jasmine2/build/queueRunner.js:45:12
    at new Promise (<anonymous>)
    at mapper (/home/runner/17-baeyeol-jojaghagi-Kyeom1997/node_modules/jest-jasmine2/build/queueRunner.js:28:19)
    at /home/runner/17-baeyeol-jojaghagi-Kyeom1997/node_modules/jest-jasmine2/build/queueRunner.js:75:41
    at processTicksAndRejections (internal/process/task_queues.js:97:5)


❌  test2
Stack Trace:
Error: expect(received).toEqual(expected) // deep equality

- Expected  - 4
+ Received  + 4

  Array [
-   300,
-   12,
-   11,
-   100,
    200,
+   100,
+   11,
+   12,
+   300,
  ]
    at Object.<anonymous> (/home/runner/17-baeyeol-jojaghagi-Kyeom1997/_test_runnertest_suite.js:13:22)
    at Object.asyncJestTest (/home/runner/17-baeyeol-jojaghagi-Kyeom1997/node_modules/jest-jasmine2/build/jasmineAsyncInstall.js:106:37)
    at /home/runner/17-baeyeol-jojaghagi-Kyeom1997/node_modules/jest-jasmine2/build/queueRunner.js:45:12
    at new Promise (<anonymous>)
    at mapper (/home/runner/17-baeyeol-jojaghagi-Kyeom1997/node_modules/jest-jasmine2/build/queueRunner.js:28:19)
    at /home/runner/17-baeyeol-jojaghagi-Kyeom1997/node_modules/jest-jasmine2/build/queueRunner.js:75:41
    at processTicksAndRejections (internal/process/task_queues.js:97:5)


❌  test3
Stack Trace:
Error: expect(received).toEqual(expected) // deep equality

- Expected  - 4
+ Received  + 4

  Array [
-   3,
-   9,
-   5,
-   7,
    2,
+   7,
+   5,
+   9,
+   3,
  ]
    at Object.<anonymous> (/home/runner/17-baeyeol-jojaghagi-Kyeom1997/_test_runnertest_suite.js:18:22)
    at Object.asyncJestTest (/home/runner/17-baeyeol-jojaghagi-Kyeom1997/node_modules/jest-jasmine2/build/jasmineAsyncInstall.js:106:37)
    at /home/runner/17-baeyeol-jojaghagi-Kyeom1997/node_modules/jest-jasmine2/build/queueRunner.js:45:12
    at new Promise (<anonymous>)
    at mapper (/home/runner/17-baeyeol-jojaghagi-Kyeom1997/node_modules/jest-jasmine2/build/queueRunner.js:28:19)
    at /home/runner/17-baeyeol-jojaghagi-Kyeom1997/node_modules/jest-jasmine2/build/queueRunner.js:75:41
    at processTicksAndRejections (internal/process/task_queues.js:97:5)


  0/3 passed, see errors above  

무수한 에러의 향연.. 보고 멘탈이 잠시 나갈뻔 했지만 자세히 보니 내가 간과한 부분이 한군데 있었다.

  • 재구성이 되는 순서는 array의 맨 뒤 요소부터 맨 앞 요소까지 입니다. 즉, 배열의 뒷 요소 부터 재구성을 진행해주세요.

문제에서 재구성을 배열의 뒷 요소부터 진행하라고 했는데 죽어도 앞 요소부터 진행해버렸으니 화가 날 수 밖에.. 수능때도 지문 제대로 안읽고 맞힐 문제 날리더니 이 버릇은 아직도 못 고쳤나보다.

2차 풀이

function divideArrayInHalf(array){
  let result = [];
  for(let i = array.length - 1; i >= 0; i--){
    if(array[i] <= 10){
      result.unshift(array[i]);
    } else {
      result.push(array[i]);
    }
  }
return result;
}

배열의 뒷 요소부터 재구성을 진행하기 위해 배열의 마지막 인덱스인 array.length - 1 부터 0까지 배열을 순회하며 10보다 작으면 unshift로 앞부분에, 아니면 push로 뒷부분에 추가하였다.

결과

node v12.16.1

✅  test1

✅  test2

✅  test3

  All tests have passed 3/3  

패스군 이제야 이쪽을 보는구나 (ㄴㄷㅆ)
깔끔하게 통과!

profile
Front-End Developer

0개의 댓글