[우테코5기] 우아한 테크코스 5기 프리코스 1주차 문제1 회고록

popolarburr·2022년 11월 7일
0

우아한테크코스

목록 보기
1/2
post-thumbnail

우아한 테크코스 1주차 (공통)미션

-> 7가지의 문제로 구성된 온보딩 미션.

  • 미션은 기능 요구 사항, 프로그래밍 요구 사항, 과제 진행 요구 사항 세 가지로 구성되어 있다.
  • 세 개의 요구 사항을 만족하기 위해 노력한다. 특히 기능을 구현하기 전에 기능 목록을 만들고, 기능 단위로 커밋 하는 방식으로 진행한다.
  • 기능 요구 사항에 기재되지 않은 내용은 스스로 판단하여 구현한다.

📚 문제 1번에 대한 회고록

처음 문제 1번을 보고나서 조금은 당황했다. 나는 당연하게도 이전 기수와 같거나 비슷한 형식으로 출제될 것이라 생각했었다. 하지만 정반대로, 코딩테스트 식의 문제가 출제되었고, 이로인해 망치로 머리를 한 대 맞은 느낌이였다. 그래도 이왕 주어진 거 열심히 하기로 하고 개별적인 문제별 요구사항과 공통적인 각 요구사항을 확인해가며 열심히 하기로 했다.

📖 문제 접근

과연 이 문제를 보고 어떻게 접근을 해야할까? 처음엔 문제에 제시된 "책"이라는 단어에 꽂혔다. 책은 대한민국기준으로 왼쪽 페이지가 x일 때, 오른쪽 페이지는 x+1이기에 단순하게 이에 대한 예외처리가 필요하겠구나 생각했다. 그렇게 먼저 접근한 것은 예외처리 였다.

🎯 예외 처리

문제 자체가 내가 직접 입력을 제공하지 않아도 위 사진에서 보듯이, 실행 결과 예시처럼 입력값을 제시한다. 그리고 이러한 입력값에 대한 결과값을 보여줌으로써, 어떠한 식으로 출력이 되어야하는지 문제에 대한 실마리를 제공한다. 그렇기에 나는 대충 감을 잡았고 문제를 풀어나가기 시작했다.
또한 책이라는 단서를 통해, 어떠한 오류가 발생할지 눈치채고 있었기에 입력값에 대한 예외처리를 시작했다.

포비가 이기면 1, 크롱이 이기면 2, 무승부는 0, 예외사항은 -1
-1번 문제 中-

또한 문제에서 예외사항에 대한 직접 언급이 있었기에 더욱 확신했다. 그렇게 누구나 생각할 수 있는 예외부터 코드를 작성해나가기 시작했다. 예를 들어, 오른쪽 페이지와 왼쪽 페이지의 차가 1이 아닐때 (사실 이건 실행 결과 예시 3번에서 힌트를 얻음ㅎ..) 또는 제시된 페이지(1~400) 안의 숫자인지 확인하는 것 부터 시작했다. 그렇게 어느정도 예외처리 코드를 다 작성하고 느낀 것이 예외처리 후에 메인 로직하는 것이 더 안전하겠다라는 점이다. (사실 찾아본 내용은 아니고, 나의 주관적 의견입니다. 아시는 분이 있다면 공유좀 해주세요.. )

그렇게 생각해낸 에러들을 생각해서, 예외처리를 통과한 후에야 메인 로직을 수행하도록 작성했다.

⌨ 코드 작성

사실 문제가 이렇다할 로직을 요구하는 것이 아닌 단순히 입력값에 대한 정확한 값을 도출해내는 단순구현 문제였기에 큰 로직이 필요없었다. 하지만 처음 주차부터 모듈화를 연습하자는 마음가짐으로 분리할 수 있는 메소드 및 함수들은 최대한 분리해보자는 마음가짐으로 시작했다.
분리하는 과정은 이렇다

    1. 큰 로직
      1) 포비와 크롱의 최댓값 생성 기능
      2) 포비와 크롱의 최댓값 비교 기능
      3) 최대값 비교를 통한 우승자 선발 기능 생성

    1. 작은 로직
      1) 홀수/짝수 일 경우를 판단하여 분리
      2) 펼친 페이지가 숫자이기에 문자열로 분리
      3) 문자열로 분리하면 각 자리수를 다시 숫자로 만들어 숫자끼리 덧셈

    큰 범위에서 작은 범위로 내려가면서 최대한 유기적으로 작성하기 위해서 return을 이용하여 최대한 많이 반환해주었다.


📌 느낀점

원래 나는 Vanila JS를 공부하긴 했지만 초창기의 모습은 한 함수에 다 작성하는 한줄 코딩을 했거나, 모듈화하는 연습이 전혀 안되어있었다. 그렇기에 이번에도 그렇게 작성 하려고 했으나 모듈화에 대해서 고민을 해보고 실제로 적용해본 결과 에러를 파악하기도 편해보이고 한 함수나 메서드를 잘 작성해놓으면 재사용할 때 용이할 것 같다는 생각이 들기도 했다. 처음에는 이렇게 하는 것이 맞나와 같은 의구심이 들었지만, 작성하면 할수록 괜찮다고 느꼈고, 앞으로의 코드 작성 방향성에 대하 조금은 알게 된 것 같았다.


[링크] : 제출 깃허브

profile
차곡차곡

0개의 댓글