0625 테스트 주도 개발 - 과제

potato·2020년 6월 26일

JavaScript_Task

목록 보기
1/1

<문제>
detectNetwork 함수를 새로 선언합니다.
이 함수는 카드번호인 cardNumber를 매개변수로 받습니다.
이 함수는 'Diner's Club','American Express'를 return해야 합니다.
이 때 cardNumber는 항상 문자열입니다.
ex) detectNetwork('343456789012345') // 'American Express

'Diner's Club' 카드 번호는 항상 38이나 39로 시작을하고, 14 자리 숫자입니다.
'American Express' 카드 번호는 항상 34 나 37로 시작하고, 15 자리 숫자입니다.(슬라이스로 숫자 비교 후 길이 비교)
(+)위의 문제 말고도 조건이 3개 더 있어 그 조건들에 맞게 코드를 작성했습니다.
detectNetwork(cardNumber) {} 일 때 총 5개의 카드사 중 cardNumber가 어느 카드사의 조건에 맞는지를 확인 후 그 카드사 이름을 출력해주는 함수를 작성하는게 문제입니다.



📝1번째 시도

알고리즘

1) 각각의 카드사에 해당하는 조건들을 if문을 사용해 처리하자!

(카드번호 : 배열 인덱스, 숫자길이 : .length, if.. else if )

⬇ 실행이 안됌

2) if문을 4개 사용하는 방식(현재 화면에 나와있는)으로 해결방식을 바꿈.(이 때는 return해야 하는 카드사가 총 2개였습니다.)

⬇ 실행이 안됌

3) 배열 인덱스 -----> .slice를 사용

//문제풀이
//각 카드사의 조건에 해당하는 if문을 사용해 총 4개의 if문 코드를 작성했습니다.
///
function detectNetwork(cardNumber) {
 let n = cardNumber;
 if(n.length === 14){   //cardNumber.length보다 n.length가 코드 작성시 더 편해 n을 선언해주었습니다.
    if(n.slice(0, 2) === '38' || '39'){
      return "Diner's Club";
    }
  }
  if(n.length === 15){
    if(n.slice(0, 2) === '34' || '37'){
      return "American Express";
    }
  }
  if(n.length === 13|| 16 || 19){
    if(n.slice(0, 1) === '4'){
      return "Visa";
    }
  }
  if(n.length === 16){
    if(n.slice(0, 2) === '51' || '52' || '53' || '54' || '55'){
      return "MasterCard";
    }
  }     //조건문이 4개일 때 여기까지 작성 후 작동시키면 정상출력이 되었는데 밑의 if문을 추가하면 정상작동이 안됩니다. 그래서 조건이 5개일 경우 어떻게 해야 문제에서 요구하는 대로 함수 작동이 되게 만들지를 고민 중입니다.
  if(n.length === 16 || 19){
   if(n.slice(0, 4) === '6011' ||
       n.slice(0, 2) === '65' ||
       n.slice(0, 3) === '644' || 
       n.slice(0, 3) === '645' || 
       n.slice(0, 3) === '646' || 
       n.slice(0, 3) === '647' || 
       n.slice(0, 3) === '648' || 
       n.slice(0, 3) === '649')
       {
      return "Discover";
    }
  }
} //여기까지가 제가 작성해야 할 함수 부분입니다.
//
// you don't have to worry about this code. keep this code.
if (typeof window === "undefined") {
  module.exports = detectNetwork;
}

📝2번째 시도

알고리즘

1) 카드사 개수만큼 각각의 카드사에 해당하는 조건을 가진 if문을 만들자(총 5개)

⬇ 실행이 안됌 (혹시나 조건문을 잘 못 쓴 건가 해서 5개 각각의 if문을 console에 실행시켰더니 조건은 문제 없이 작동함)

2) 각각 총 5개의 if문이 아닌 다른 방법을 사용하자

(여기까지 한 상태입니다)

1개의 댓글

comment-user-thumbnail
2021년 1월 15일

보라님! 전에 메세지 받고 답장 드려야지 하다가 벌써 시간이 너무 많이 흘러버렸네요.ㅠㅠ 문득문득 생각은 했었는데 정신이 없어 이제야 답장 드리려다 보니 보라님 슬랙 계정을 찾을 수가 없어요 흑흑.ㅠㅠ 카톡도 모르고.. 어찌 연락드려야 할지 고민하다 이렇게 블로그에 답글이라도 남겨봅니다! 제 카톡 아이디는 filmafrica에요! 보시면 연락 주셔요.ㅠㅠ

답글 달기