2020.1.6 / Pre : Hiring Assessment

Mono crom·2021년 1월 8일
0

Intro

코딩공부 하면서 처음으로 진짜 뭐 하나 부수고 싶다는 생각이 들게 만들었던 HA 를 막 끝냈다.

아침 10시에 시작해서 마지막 제출버튼을 클릭하기까지 22시간 걸렸다.

그 중에 2시간은 밥먹고 쉬었고, 3시간은 잤으니까 순수하게 문제를 푼건 17시간 만이다.


ISSUE

날 힘들게 한건 마지막 문제인 test7 이었는데, 8시간을 머리 싸매게 만든 주요 이슈는 이러했다.

const things = [
  {
    a: "apple",
    b: "orange",
    c: [
      { 
        f: [
          { 
            g: "coffee",
            h: "juice",
          }
        ]
        d: "dog",
        e: "cat",
      }
    ]
  }
];
  1. 예를 위해 만든거지만, 위 코드에서 난 d: "dog" 를 찾아내서 리턴하고 싶다.

  2. 내가 찾고싶은 타겟 찾으면 그 객체를 리턴하면서 함수를 종료시키고, value가 배열이면 아랫층으로 내려가는 재귀함수를 짰다.

  3. 그런데 이런 제길 f, d, e 키가 있는 층에서 함수가 f값이 배열인걸 발견한 순간 d, e는 무시하고 그냥 g, h 층으로 내려간다. 그리고 타겟을 못 찾은 채로 거기서 함수가 종료된다. 젠장 d 저기 있잖아 잡아오라고!!!

  4. 그래서 재귀함수를 result 변수에 할당해뒀다가 나중에 result값을 반환하는 방식을 사용하니 1번 이슈는 해결됐는데, 좀 전까지 잘 통과되던 다른 테스트 3개가 터졌다. 가슴이 답답해지고 아무것도 생각나지 않는다.

  5. 쓰읍... 그래. 함수를 어디서, 어떻게 재귀돌릴 것인가? 거기에 내가 이걸 끝내고 잠들 수 있는 마법이 있다.
    장고 끝에 그런 결론에 이르렀다.


Struggling

문제는 파악했지만 뾰족한 해결책을 떠올리지 못한 채 이런저런 시도들,

가령 for of문을 일반 for문으로 바꿔봤다가...
반복문을 서로 분리시켜봤다가...
객체니까 Object.keys().includes() 사용해 봤다가...

했지만 전부 대동소이한 작동에 표현법만 달라질 뿐이었다.

지금의 내 지식 바운더리 내에서는 해결이 어렵다는 결론을 내고 BFS같은 개념들을 구글링하기 시작.
오오 그렇지 그렇지! 일단 층을 다 돌아보고 id를 못찾으면 그 때 아랫층으로 내려가야지!!

근데 개념만 알겠고 구현 레퍼런스코드들이 너무 생소하다.
어느정도 이해를 해야 따라 써보기라도 할 텐데, 너무 처음보는 문법들이 많다.
난 아직 노란띠인데 이런 태극7장처럼 보이는 기술을 써보라고 문제를 냈을까...? 아닐 것 같은데...

아... 해 뜨기 전에 다 풀고 꿀잠자긴 다 글렀구나...

그랬는데...?


Resolution!

새벽 4시경에 뇌정지가 심하게 와서 7시까지 잠깐 자고 일어났는데,
정말 신기하게도 다시 의자에 앉자마자 아이디어가 퐁퐁 떠오르더니 30분도 안되어서 스르륵 풀어냈다.
역시 사람은 잠이 중요하다.

  1. 재귀함수를 그냥 리턴하면 안되고 변수에 저장해야 되는 건 맞다. 안 그러면 층을 다 안 돌고 재귀조건을 맞딱뜨리는 순간 그냥 아랫층으로 내려가 버린다.

  2. 핵심은, 프라이팬 하나에 모든 요리를 다 하려고 하지 않는거다. 층을 탐색하는 역할과 아랫층으로 내려가는 역할을 따로 찢어서 각자의 일을 하게끔 하면 된다.

  3. 말이야 쉽지! 여기서 기프트박스가 나온다. 코플릿 재귀함수 에서 기프트박스를 세심하게 공부했다면 머리에 느낌표가 뿅! 드면서 일련의 시도를 해볼 수 있을지도 모른다.

이래서 선생님이 그렇게 기프트박스 기프트박스 노래를 불렀구나... 진짜 선물상자였네;


Outro

혹시 나처럼 7문의 벽에 막혀서 하염없이 구글링을 하다가 들어온 사람이 있다면, unpackGifrBox 문제로 돌아가보자.

풀어서 제출했다고 끝이 아니라 test7의 번뇌를 끊을 수 있는 진짜 선물이 그 안에 잠들어있다.


이제 자러 가야지...

profile
니가 진짜로 원하는게 뭐야

0개의 댓글