Skip to content

Latest commit

 

History

History
25 lines (14 loc) · 2.29 KB

interview_elonmusk_.md

File metadata and controls

25 lines (14 loc) · 2.29 KB

면접 질문

어떤 문제가 있었고, 이를 어떻게 해결했는지. 어떤 결정을 했는지.
해결한 척, 혹은 해결 못한 사람들은 어느정도 얘기하다 만다고 한다.
뭔가 제대로 성과를 냈다면 이에 제대로 기여한게 맞는지 확인 할 것.

보통 기여를 하다 만 사람은 어려웠던 이슈에 대해 제대로 모를 것임.

어떤 문제가 있었는가?

현재 진행하고 있는 게임 개발 프로젝트에서 스테이지를 이진트리의 형태로 자동 생성되게끔 만들어야 했었다. 그런데 이 때, 트리가 원하는 크기/형태로 생성되지 못하는 문제가 있었다.

어떻게 해결했는가?

각 노드는 자기 자신을 생성한 뒤 자식 노드의 수를 0개에서 최대 2개까지 정해서 생성시키는데, 이때 트리 전체의 노드 수가 일정 수 이하이거나 생성하려는 노드의 높이가 일정 높이 이하일 때 자식 노드를 0개 만드는 경우의 수가 나올 경우 강제로 자식 노드를 1개 만들도록 간단한 조건을 붙여주었다.

이렇게 대처하면 스테이지의 최소 높이도 설정해줄 수 있고, 높이를 달성했음에도 불구하고 노드 수가 너무 적을 때 추가로 노드를 더 생성해서 적당한 크기의 트리를 만들어줄 수 있다. 또한, 최소 노드 수와 최소 높이를 각 스테이지마다 다르게 설정할 수 있게 해서 다음 스테이지로 넘어갈수록 점점 커지는 트리를 구현 할 수도 있었다.

느낀 점

트리는 수학적으로 접근해야한다는 의견이 많고, 이에 따라 솔루션 또한 정말 많이 존재한다. 그러나 이번 솔루션은 객체지향적 관점에서 클래스와 메소드 수준에서 해결할 수 있도록 개발했는데, 이 경우 수학적인 접근 방법보다 훨씬 직관적인 코드를 만들 수 있다는 것을 체감하게 됐다.

또한 지금처럼 클래스 수준에서 동작하는 직관적인 코드를 만들면 성능면에서는 조금 뒤쳐질 수 있으나, 유지보수면에서 훨씬 쉽기 때문에 오히려 추후에는 더 나은 결과를 보일 수 있을 것으로 생각된다.

저는 그런 코드를 짜고 분석할 수 있는 사람입니다. 저를 뽑아주십쇼 제발