ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 위코드 2주차 중간시험 리뷰
    프론트엔드 개발자가 될거야./js 2022. 7. 1. 17:25

    위코드 1주차로 html,css,js replit 풀고

    위코드 2주차로 인스타그램 클론코딩 + 몇가지 js 기능 구현을 했다.

     

    그리고 나의 학습을 스스로 점검하기 위해 중간 시험을 치뤘다.

    1시간동안 자바스크립트 5문제를 푸는 형식이었다.

     

    4,5번 문제는 (나는..) 어려웠다.. ^__^

     

    01.  isEven

    Q. 짝수인지 판별하는 함수 isEven을 작성 주세요.

    console.log(isEven(11)) // --> "짝수가 아닙니다."
    console.log(isEven(10)) // --> "짝수 입니다."

    나의 방법

    function isEven(num) {
      // 아래 코드를 입력해주세요.
        if (num % 2 === 0) {
          return "짝수 입니다."
        } else {
          return "짝수가 아닙니다."
        }
      }

    다른 방법

    if문이랑 구조만 다르지만

    삼항 연산자로 풀어서 가독성 높이고 더 간단하게 하는 방법이다.

    function isEven(num) {
      return (num % 2 === 0) ? "짝수 입니다." : "짝수가 아닙니다.";
    }

    02. calculateTotal

    Q. calculateTotal 함수를 작성하세요.

    팁과 세금을 제외한 식사값이 주어졌을때, calculateTotal 함수는 팁과 세금이 포함된 총 식사값을 반환합니다.

    Notes:

    • 세금은 9.5% 팁은 15% 로 계산하세요.
    • 팁을 계산할때 세금을 포함하여 계산하지 마세요.
    console.log(calculateTotal(20)); // --> 24.9

    나의 방법

    function calculateTotal(amount) {
      let a = amount * 0.095
      let b = amount * 0.15
      return amount + a + b
    }

    이거는 설명할 것이 따로 없다!


    03. getPrefix

    Q. getPrefix 함수를 작성하세요.

    문자열이 주어졌을때, -를 기준으로 앞에 있는 문자열을 반환하세요.

    console.log(getPrefix('BTC-KRW')) // --> BTC

    나의 방법

    function getPrefix(str) {
      let a = str.split('-')
      return a[0]
    }

    str을 split메서드를 사용해서 배열로 바꿔준다.

    a = [BTC, KRW]가 되고

    a배열의 0번째 요소를 뽑으면 정답


    04. getFine 

    getFind 함수를 작성하세요.

    문자와 문자열이 주어졌을때, getFind 함수는 주어진 문자열에서 주어진 문자가 나타나는 첫번째 위치를 반환합니다.

    Notes: 문자열의 첫번째 문자는 인덱스 값 0 을 가집니다. 만약 문자열에 해당 문자가 여러번 나타나면, 첫번째로 나타나는 위치를 반환해야 합니다. 만약 문자가 문자열에 존재하지 않는다면, -1 을 반환해야 합니다.

    중요!! indexOf 함수를 사용하지 마세요.

    const output = getFind('a', 'I am a hacker')
    console.log(output) // --> 2

    나의 방법 (익현님에게 배운..)

    function getFind(filter, sentence) { 
      if(sentence.includes(filter)) {
        for(let i in sentence) {
          if(sentence[i] === filter) {
            return Number(i)
          }
        }
      } else {
        return -1
      }
    }

    if(sentence.includes(filter)) 여기까지 쓰고 그 다음에 어떻게 해야할지 감이 안잡혀서 못풀었다.

    'I am a hacker'이거를 하나씩 뽑아내고 싶은데 문자열을 하나씩 뽑아내는 방법을 몰랐다.

    왜냐하면 for...in문이 배열의 요소랑 객체의 키는 뽑아낸다는 걸 알았지만

    문자열의 문자 하나하나까지도 뽑아주는 줄은 몰랐기 때문이다.

    (근데.. for(let i in sentence) = for (let i = 0; i < sentence.length; i++)

     즉, for..in문 = for문인데 왜 for문으로 풀 생각을 못했는가... 문제를 많이 풀어봐야할 것 같다..!! )

    하나 더 배울 수 있었던 시간이었다..!

    아무튼 그래서 for..in문으로 'I am a hacker'를 하나하나 해체해 볼 수 있었다!

    'I'/' '/'a'/'m' .... 이렇게....

    이제 그 뽑아낸 것이 'a'랑 같으면 그에 해당하는 i를 호출하려고 하니

    문자열이라고 해서 Number(i)로 숫자로 바꿔주었다.

    다른 방법

    function getFind(filter, sentence) {
      let answer = sentence.search(filter)
      return answer
    }

    search 메서드를 사용하는 방법이다.

    근데 search메서드도 indexOf처럼 일치하는 문자의 위치를 반환해줘서 거의 indexOf랑 같은 메서드다.

    이 문제에서 원하는 풀이가 아닐 것 같다!


    05. findLongestWord

    find_longest_word 함수를 만들어 주세요.

    주어진 리스트안에 있는 단어중 가장 긴 단어를 찾을수 있도록 함수를 완성해주세요.

    console.log(find_longest_word(["PHP", "Exercises", "Backend"])) 
    // --> "Exercises"

    나의 방법

    function find_longest_word(arr) {
      let max = arr[0] //PHP
      for(let i = 0; i < arr.length; i++) {
        if(arr[i].length > max.length) {
          max = arr[i]      
        } 
      } return max
    }

    먼저 let max = arr[0]해서 arr[0]을 가장 긴 단어로 가정해줬다.

    그리고 for문을 돌려서 요소의 길이를 비교했다.

    그래서 arr[0].length 보다 더 긴 요소가 있으면

    max를 재할당해줬다.

     

     

     

    이런 알고리즘 문제들을 많이 풀어봐야겠다고 느낀 하루였다.

    주말동안 열공해야지

     

    댓글

Designed by Tistory.