[TIL] 2021.03.24 한 차원 높게 생각하기_lesson JS, 알고리즘(최종보스)

나라리야·2021년 3월 24일
0

TIL_codestates

목록 보기
12/12
post-thumbnail

알고리즘은 그동안 배웠던 자바스크립트의 형식을 모두 활용해서 문제를 풀어야했다.
그리고 여기서 수도코드의 중요성을 더더욱 알게되었는데
문제를 해결하기 위한 방법을 적절하게 접근할 수 있도록 올바른 수도코드를 작성하고
생각을 해야 문제를 풀 수 있지 그렇지 않다면 절대 해답에 가까워질 수 없었다.

예시로

문제) 배열을 입력받아 차례대로 배열의 첫 요소와 마지막 요소를 키와 값으로 하는 객체를 리턴해야 합니다.

주의!
빈 배열을 입력받은 경우, 빈 객체를 리턴해야 합니다.
입력으로 받는 배열을 수정하지 않아야 합니다.
객체를 리턴해야 합니다.
인자 arr는 'string'타입을 요소로 갖는 배열

function transformFirstAndLast(arr) {

해당 문제를 처음 받았을 때 먼저 작성한 수도코드이다.

  1. 배열의 첫 요소와 마지막 요소를 키와 값으로 하는 객체를 리턴하길 원한다.
  2. 첫요소와 마지막요소를 담아 리턴할 빈 객체값의 변수가 필요하다.
  3. 배열의 첫요소를 slice를 통해 찾아서 임의의 변수에 할당한다.
  4. 배열의 마지막 요소를 slice를 통해 찾아서 임의의 변수에 할당한다.
  5. 만약 빈배열이라면 빈 객체를 리턴한다.
  6. 처음 선언했던 빈 객체값을 가진 변수에 첫요소를 키로두고 값을 마지막요소로 할당한다.
  7. 그리고 최종 객체를 리턴한다.

}

수도코드를 참고하여 실제 코드를 작성해본다.

function transformFirstAndLast(arr) { 

let result = {};

let first = arr.slice(0,1);
let last = arr.slice(-1);

if (arr.length === 0){
return {};

result[first] =`${last}`;

return result; 

}

문제는 해결 되었지만
실제 레퍼런스 코드와는 너무 다르다. 아직 내가 가진 지식으로 쓸 수 있는 코드는 너무 부끄럽지만...이게 최선이었다.
레퍼런스 코드는 빈 객체를 변수로 만들어주고 인자로 온 배열에 slice를 쓰지않고 배열의 첫요소와 마지막요소를 인덱스로 가져와서 배열의 길이가 0보다 큰 빈배열이 아닐때를 조건으로 객체에 키와 속성값을 할당하고 해당 객체를 리턴할 수 있어야했다.
ㅎ.. 아직 이렇게 까지 생각하기는 어려운 것 같다.

더 간결하고 가독성있는 코드를 쓸 수 있도록 연습해야겠다..ㅜㅜ

결국 수도코드를 통해서 불필요한 코드를 걷어내야할텐데.. 아직 그정도 레벨은
난 아직 조무래기일뿐이니깐..핳
8줄의 코드가 4줄이 될 수 있게 노력하쟈!

profile
Code의 美를 추구하는 개발자 🪞

0개의 댓글