2024.01.21 TIL - 알고리즘(repeat), 리액트 입문강의(구조분해할당)

Innes·2024년 1월 21일
0

TIL(Today I Learned)

목록 보기
46/147
post-thumbnail

📘 오늘의 공부

  • 알고리즘 코드카타 - repeat() 메서드
  • 리액트 입문강의 2회독 - 구조분해할당

📝 알고리즘

  • 문제 : 수박수박수박수박수박수?

    <문제 설명>
    길이가 n이고, "수박수박수박수...."와 같은 패턴을 유지하는 문자열을 리턴하는 함수, solution을 완성하세요. 예를들어 n이 4이면 "수박수박"을 리턴하고 3이라면 "수박수"를 리턴하면 됩니다.
    <제한 조건>
    n은 길이 10,000이하인 자연수입니다.

  • 풀이 : repeat() 메서드 사용

function solution(n) {
    // n이 짝수이면 (수박 * n/2)
    // n이 홀수이면 
    // 1) n=1이면 (수*1)
    // 2) n>1이면 수박*(th.floor(n/2)) + 수
  
    let watermelon = '수박'
    let half_watermelon = '수'
    
    if (n%2 === 0) {
        let answer1 = watermelon.repeat(n/2);
        return answer1;
    } else if (n === 1) {
        return half_watermelon;
    } else {
        let answer2 = watermelon.repeat(Math.floor(n/2)) + half_watermelon;
        return answer2;
    }
}
  • 같은 문자를 n번 반복 생성 방법 : '문자열'.repeat(n)

  • 문제 : 내적

    <문제 설명>
    길이가 같은 두 1차원 정수 배열 a, b가 매개변수로 주어집니다. a와 b의 내적을 return 하도록 solution 함수를 완성해주세요.
    이때, a와 b의 내적은 a[0]b[0] + a[1]b[1] + ... + a[n-1]*b[n-1] 입니다. (n은 a, b의 길이)
    <제한사항>
    a, b의 길이는 1 이상 1,000 이하입니다.
    a, b의 모든 수는 -1,000 이상 1,000 이하입니다.

  • 풀이

function solution(a, b) {
    // for문으로 a[i]*b[i]를 반복하는 새로운 배열 만들기
    // reduce로 배열 요소 다 더하기
  
    let Arr = [];
    for(let i = 0; i < a.length; i++) {
        Arr.push(a[i]*b[i]);
    }
    let answer = Arr.reduce((a,b) => a+b);
    return answer;
}
  • 다른 풀이 참고 1. 나처럼 for문을 쓰지만 reduce를 쓰지 않고 더하기 할당 연산자 += 를 사용하여 for문 안에서 끝내기
function solution(a, b) {
    var sum = 0;
    for(var i=0; i<a.length; i++){
        sum += a[i]*b[i]; // reduce 대신 이 부분 작성
    }
    return sum;
}
  • 다른 풀이 참고 2. reduce() 메서드의 제대로된 활용!
    (reduce에는 나처럼 arr, cur 값만 들어오는게 아니라 idx, 초기값도 활용이 가능하다!)
function solution(a, b) {
    var answer = a.reduce((acc, cur, idx) => acc += cur*b[idx], 0)
    return answer;
}

🔥 리액트 강의 2회독

구조분해할당

(객체, 배열의 비구조화(destructuring))

1. 객체의 구조분해할당

  • 객체의 value들을 출력할 수 있게 해줌

  • key들을 변수 이름으로 가져옴

  • key를 변수 이름으로 가져와서 객체{}로 묶기

  • 그 객체의 할당 값은 바로 원 객체의 이름!

    • 예시

      const obj = {
        name: 'judy',
        age: '20',
      };
      
      // 객체를 구조분해할당 하기
      const {name, age} = obj;
      
      // name, age(key)는 변수 이름이 되고, 그 변수를 부르면 해당 value가 출력된다!
      console.log(name) // 'name'
      console.log(age) // '20'

2. 배열의 구조분해할당

  • 배열의 요소들을 출력하게 해줌

  • 변수 이름은 임의 지정

  • 변수 이름의 위치와 같은 위치의 배열 요소가 출력됨

    • 예시
    const arr = [1, 2, 3];
    
    // 배열을 구조분해할당 하기
    const [one, two, three] = arr;
    
    // one, two, three는 변수 이름이 되고, 해당 위치의 배열 요소가 출력된다!
    console.log(one) // 1
    console.log(two) // 2
    console.log(three) // 3
profile
무서운 속도로 흡수하는 스폰지 개발자 🧽

0개의 댓글