23/10/28

Laejun Kim·2023년 10월 28일
2

TIL

목록 보기
25/89
post-thumbnail

연습문제 풀이

배열속 원소들의 곱과 합

출처)https://school.programmers.co.kr/learn/courses/30/lessons/181929

  • 정수가 담긴 리스트 num_list가 주어질 때, 모든 원소들의 곱이 모든 원소들의 합의 제곱보다 작으면 1을 크면 0을 return하도록 solution 함수를 완성해주세요.

<내 풀이>

function solution(num_list) {
  var answer = 0;
  function addAll(arr) {
    let sum = 0;
    for (const num of arr) {
      sum += num;
    }
    return sum;
  }
  function multiplyAll(arr) {
    let multiplyresult = 1;
    for (const num of arr) {
      multiplyresult *= num;
    }
    return multiplyresult;
  }
  multiplyAll(num_list) < addAll(num_list) * addAll(num_list)
    ? (answer = 1)
    : (answer = 0);
  return answer;
}

<다른 사람 풀이>

function solution2(num_list) {
  let accMul = 1;
  let accSum = 0;
  for (const num of num_list) {
    accMul *= num;
    accSum += num;
  }
  return accMul < accSum ** 2 ? 1 : 0;
}
  • 내 풀이가 너무 부끄럽게 느껴질 정도로 타인의 코드와 수준 차이가 난다...

<배운점>

  • 하나의 함수에 하나의 기능만 넣을 필요는 당연히 없고 곱하기와 더하기를 한번에 처리할 수 있다
  • 애초에 함수까지 만들 필요가 없다면 안만드는 것이 더 간결한 코드가 된다.
  • 처음 양식에 var answer라고 선언된 변수는 굳이 사용하지 않아도 되나 보다.

주사위 게임

출처)https://school.programmers.co.kr/learn/courses/30/lessons/181839

  • 1부터 6까지 숫자가 적힌 주사위가 두 개 있습니다. 두 주사위를 굴렸을 때 나온 숫자를 각각 a, b라고 했을 때 얻는 점수는 다음과 같습니다.

    a와 b가 모두 홀수라면 a2 + b2 점을 얻습니다.
    a와 b 중 하나만 홀수라면 2 × (a + b) 점을 얻습니다.
    a와 b 모두 홀수가 아니라면 |a - b| 점을 얻습니다.
    두 정수 a와 b가 매개변수로 주어질 때, 얻는 점수를 return 하는 solution 함수를 작성해 주세요.

<내 풀이>

function solution(a, b) {
    if(a%2===1 && b%2===1){
        return a**2+b**2
    } else if (a%2!==1 && b%2===1 ||a%2===1 && b%2!==1){
        return 2*(a+b)
    }else {return Math.abs(a-b)}
    }

<배운점>

  • Math.abs() 처음 사용해봄 => 절댓값을 구해주는 메서드.
  • "absolute number" 의 앞글자를 따와서 abs 다.

JavaScript

선택적 연결(optinal chaining)

  • 객체를 사용할때 존재하지 않는 속성을 참조해 오는 경우 error가 발생. 이때 선택적 연결을 이용해서 undefined를 반환한다.
const person={
  name: "jun",
  age : "25",
  hobby: ['coding','cooking']
}

다음과 같은 객체가 있을때 객체의 속성에 접근하는 방식으로 person.name이나 person.hobby와 같은 'dot notation'을 사용하는 것은 이미 알고 있다.

그런데 모종의 이유로 존재하지 않는 속성을 함수나 다른 코드에서 참조하려 한다면 해당 코드가 정상적으로 작동하지 않을 것이다. 예컨대 위 객체에 존재하지 않는 gender 값을 참조하려 하는 상황을 생각해 볼 수 있다.

이때 obj?.gender 와 같이 선택적 연결을 이용하면 gender가 존재하는 경우 gender의 value를 정상적으로 참조해오고, gender가 존재하지 않는 경우 undefined 를 반환하게 할 수 있다.

이를 응용하여 삼항연산자 등에 사용할 수 있다.

person?.gender === undefiend ? [gender가 없을때 실행할코드] : [gender가 있을때 실행할 코드]

0개의 댓글