GitHub ID : soohyun-dev
윤수현의 개발 공간
GitHub ID : soohyun-dev
전체 방문자
오늘
어제
  • 분류 전체보기 (918)
    • 성장기록 (49)
      • 성장기록 (3)
      • 우아한테크코스 (16)
      • 프로젝트 (15)
      • TIL (14)
      • 테오의 스프린트 (1)
    • 프로그래밍언어 (88)
      • C언어 (14)
      • HTML\CSS (12)
      • JavaScript (7)
      • React (23)
      • Python (11)
      • JAVA (14)
      • TypeScript (6)
    • 알고리즘 공부 (736)
      • 코드업 - 파이썬 (108)
      • 백준 - 파이썬 (468)
      • 백준 - 자바스크립트 (125)
      • 프로그래머스 - 파이썬 (1)
      • 프로그래머스 - 자바스크립트 (34)
    • 책 리뷰 (9)
      • 프로그래밍 (3)
      • 독서 (6)
    • 전자기기 (1)
    • 일상, 일기 (18)
    • 기술 세미나 (2)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 프로그래머스
  • 코딩
  • 코드업
  • 코딩테스트
  • 프로그래머스풀이
  • 프론트엔드
  • 백준풀이
  • 파이썬
  • 프로그래머스자바스크립트
  • 자바스크립트
  • 영어
  • javascript
  • PYTHON
  • 백준파이썬
  • 코테
  • 코드업파이썬
  • 프로그래밍언어
  • 영어독해
  • 백준
  • 독해

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
GitHub ID : soohyun-dev

윤수현의 개발 공간

우아한테크코스 5기 프론트엔드 미션 리팩터링 1주차 1번
성장기록/우아한테크코스

우아한테크코스 5기 프론트엔드 미션 리팩터링 1주차 1번

2022. 11. 25. 00:01

 

우아한테크코스 5기 프론트엔드 미션 리팩터링 1주차 1번 

 

 

 

📋 문제 1번

 

https://github.com/woowacourse-precourse/javascript-onboarding/blob/main/docs/PROBLEM1.md

 

GitHub - woowacourse-precourse/javascript-onboarding: 온보딩 미션을 진행하는 저장소

온보딩 미션을 진행하는 저장소. Contribute to woowacourse-precourse/javascript-onboarding development by creating an account on GitHub.

github.com

 

 

 

 

 

 

⚙️ 기능 목록

 

 

1. 예외처리

  • 두 페이지가 나오지 않은 경우
  • 오른쪽 페이지에서 왼쪽 페이지를 뺐을 때 1이 나오지 않는 경우
  • 예외 처리에 해당되는 경우 -1 리턴

 

2. 점수 계산

  • 페이지의 각 자릿수 더하기
  • 페이지의 각 자릿수 곱하기

 

3. 점수 비교

  • 포비가 더 크면 1 리턴
  • 크롱이 더 크면 2 리턴
  • 무승부 0 리턴

 

 

 

 

 

 

⬅️이전 풀이

 

 

😥 미흡했던 점

  • let과 const를 적절하게 사용하지 않은점
  • 불필요한 변수를 선언한 점 (ex. result)
  • 함수의 배치
  • 함수명 단어 3개 이상

 

 

 

📌 고려사항

  • 클래스로 구현
  • 메소드는 한 가지일만 해야하기에 plus와 multiply를 나눔.
  • leftPage와 rightPage는 굳이 선언하지 않아도 되지만, 가독성을 위해 작성.
  • let, const 적절히 사용
  • 메소드명 단어 3개 이하
  • 메소드는 사용 순서대로 위에서 부터 아래로 배치

 

 

 

 

 

📜 리팩터링

 

https://github.com/soohyun-dev/javascript-onboarding/blob/soohyun-dev/src/problem1.js

 

GitHub - soohyun-dev/javascript-onboarding: 온보딩 미션을 진행하는 저장소

온보딩 미션을 진행하는 저장소. Contribute to soohyun-dev/javascript-onboarding development by creating an account on GitHub.

github.com

 

 

class Exception {
  constructor(pobi, crong) {
    this.pobi = pobi;
    this.crong = crong;
  }
  check() {
    return this.isException(this.pobi) || this.isException(this.crong);
  }

  isException(target) {
    return this.isAllowLength(target) || this.isAllowPage(target);
  }

  isAllowLength(target) {
    return target.length !== 2;
  }

  isAllowPage(target) {
    const [leftPage, rightPage] = target;

    return rightPage - leftPage !== 1;
  }
}

class Calculator {
  constructor(pobi, crong) {
    this.pobi = pobi;
    this.crong = crong;
  }

  compareScore() {
    const pobiScore = this.getScore(this.pobi);
    const crongScore = this.getScore(this.crong);
    if (pobiScore > crongScore) return 1;
    if (pobiScore < crongScore) return 2;

    return 0;
  }

  getScore(target) {
    let score = 0;
    target.forEach((page) => {
      score = Math.max(this.plus(page), this.multiply(page), score);
    });

    return score;
  }

  plus(target) {
    let cnt = 0;
    String(target)
      .split("")
      .forEach((num) => (cnt += +num));

    return cnt;
  }

  multiply(target) {
    let cnt = 1;
    String(target)
      .split("")
      .forEach((num) => (cnt *= +num));

    return cnt;
  }
}

function problem1(pobi, crong) {
  const exception = new Exception(pobi, crong);
  if (exception.check()) return -1;
  const calculator = new Calculator(pobi, crong);

  return calculator.compareScore();
}

module.exports = problem1;

 

반응형

'성장기록 > 우아한테크코스' 카테고리의 다른 글

우아한테크코스 5기 프론트엔드 미션 리팩터링 1주차 3번  (0) 2022.11.27
우아한테크코스 5기 프론트엔드 미션 리팩터링 1주차 2번  (0) 2022.11.26
우아한테크코스 5기 프론트엔드 프리코스 그 이후  (0) 2022.11.24
우아한테크코스 5기 프론트엔드 프리코스 4주차 회고  (0) 2022.11.23
우아한테크코스 5기 프론트엔드 프리코스 3주차 회고  (1) 2022.11.16
    '성장기록/우아한테크코스' 카테고리의 다른 글
    • 우아한테크코스 5기 프론트엔드 미션 리팩터링 1주차 3번
    • 우아한테크코스 5기 프론트엔드 미션 리팩터링 1주차 2번
    • 우아한테크코스 5기 프론트엔드 프리코스 그 이후
    • 우아한테크코스 5기 프론트엔드 프리코스 4주차 회고
    GitHub ID : soohyun-dev
    GitHub ID : soohyun-dev
    환영합니다!😊 이곳은 저의 개발에 관한 내용들을 정리하는 공간입니다. 알고리즘 풀이에도 관심이 많아요. 좋은 하루 되세요~! github : soohyun_dev

    티스토리툴바