Pair Coding & Skill Interview 02

Jaemin Jung·2021년 10월 13일
0

Job Searching

목록 보기
3/8

프로그래머스 상호 평가

function calculateRank(avg) {
    // 평균값을 받아 학점을 반환하는 함수
    if(avg >= 90){
       return 'A'
    }else if(avg < 90 && avg >= 80){
       return 'B'
    }else if(avg < 80 && avg >= 70){
       return 'C'
    }else if(avg < 70 && avg >= 50){
       return 'D'
    }else{
       return 'F'
    }
}

function solution(scores) {
  // 최종 결과를 담을 변수
  let result = '';
  
  for(let i = 0; i < scores.length; i++) {
      // 총합 변수
    let sum = 0;
      // 최소값 변수
    let min = 101;
      // 최대값 변수
    let max = -1;
      // 평균값 변수
    let avg = 0;
    
    for (let j=0; j < scores[i].length; j++){
        //학생의 점수는 열(j)이기에 [열][행]으로 값을 가져온다.
        //max값과 min값을 추출하기 위해서 매번 확인해줌
      max = Math.max(max, scores[j][i])
      min = Math.min(min, scores[j][i])
        //모든 점수를 더한다.
      sum += scores[j][i];
    }
      //최소값 최대값의 개수를 확인하기 위한 변수
  let maxCount = 0;
  let minCount = 0;
  
  for(let j=0; j < scores[i].length; j++) {
    if(scores[j][i] === max) {
        //현재 점수가 최대점수라면 최대점수 카운트 +1
      maxCount++;
    }else if(scores[j][i] === min) {
        //현재 점수가 최소점수라면 최소점수 카운트 +1
      minCount++;
    }
  }

    if ((maxCount === 1 && max === scores[i][i]) || 
        (minCount === 1 && min === scores[i][i])) {
       //만약에 최대값 최소값이 1인 상황에서 
      //최대값 최소값이 자신에게 준 점수일 경우에는 
      //그 값을 빼고 평균점수를 계산한다.  
      sum -= scores[i][i];
      avg = sum / (scores.length-1)
    } else {
      avg = sum / scores.length;
    }
      //학점 변환 함수를 호출하여 평균점수를 학점으로 변환
    const grade = calculateRank(avg)
      //최종 결과 변수에 하나씩 추가한다.
    result += grade
  }
  return result
}

React 라이브러리에서 제공하는 기본 내장 API 함수에 대해서 설명해주세요. (ex. useEffect, useCallback)

기본 내장 API함수중 useEffect에 대해서 설명하겠습니다.

useEffect는 Side Effect를 다루기 위한 기본 내장 API 함수입니다.
react의 함수 컴포넌트는 Pure Function으로 작동합니다.
그저 props로 값을 받고 그에 대한 값의 출력만이 있을 뿐입니다.

하지만 react로 애플리케이션을 만들때는 외부 API에 요청이 필요할 경우가 생깁니다.
이 경우에는 React 입장에서는 모두 Side Effect입니다.

useEffect에 첫번째 인자는 함수입니다.
해당 함수 내에서 Side Effect를 실행하면 됩니다.

useEffect의 기본형은 전달된 함수를 3가지 조건에 실행시키는데,
렌더링이 완료된 직후
새로운 props를 전달받았을 때
특정 state값이 변경되었을 때 가 있습니다.

두 번째 인자에 배열을 넣어 useEffect를 실행할 조건도 설정 가능합니다.
빈 배열을 넣으면 컴포넌트가 처음 생성될때만 useEffect가 실행됩니다.
빈 배열에 state를 넣게되면 지정한 state값이 변경될때마다 useEffect가 실행됩니다.

컴포넌트가 unmount 될 때는 clean-up 함수를 반환하여 정리하는 리소스를 만들 수 있습니다.

Side Effect란 함수 내의 구현이 함수 외부에 영향을 끼치는 경우를 말합니다.
Pure Function이란 함수를 입력했을때 반환되는 값을 예측 가능한 함수, 즉 똑같은 값이 나오는 함수를 말합니다.

피드백

코드를 작성후 에러가 있을지 확인해보는 작업이 필요할듯

profile
내가 보려고 쓰는 블로그

0개의 댓글