23/12/13

Laejun Kim·2023년 12월 13일
1

TIL

목록 보기
55/89

연습문제

행렬의 덧셈

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

  • 행렬의 덧셈은 행과 열의 크기가 같은 두 행렬의 같은 행, 같은 열의 값을 서로 더한 결과가 됩니다. 2개의 행렬 arr1과 arr2를 입력받아, 행렬 덧셈의 결과를 반환하는 함수, solution을 완성해주세요.

<내 풀이>

function solution(arr1, arr2) {
    let arr=[]
  arr1.map((el,idx)=>{
      let temp =el.map((num,idx2)=>num+arr2[idx][idx2])
      arr.push(temp)
  })
    return arr
}
  1. arr1에 map을 써서 내부의 배열에 접근, 해당 배열에다 다시 map 을 사용하여 해당되는 인덱스를 가진 arr2의 내부 배열 값과 더한다.
  2. 미리 만들어둔 임시 배열에 더한 값을 집어넣고 리턴한다.

두개 뽑아서 더하기

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

  • 정수 배열 numbers가 주어집니다. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성해주세요.

<내 풀이>

function solution(numbers) {
    function getAllCombinations(arr) {
  const combinationSums = [];

  for (let i = 0; i < arr.length; i++) {
    for (let j = i + 1; j < arr.length; j++) {
      combinationSums.push(arr[i] + arr[j]);
    }
  }

  return combinationSums;
}
const answerArr=[]

const SET = new Set(getAllCombinations(numbers));
    SET.forEach(el=>answerArr.push(el))
    
    
    
    
    return answerArr.sort((a,b)=>a-b )
}
  1. 먼저 모든 가능한 조합을 구성하고 그렇게 조합된 두 원소의 합을 구하는 함수를 만든다.
  2. 그렇게 만들어진 모든 조합의 합들을 combinationSums 배열에 담는다.
  3. 중복된 요소를 제거하기 위해 Set 을 사용, Set에 사용 가능한 메서드를 이용해 중복 요소가 제거된 상태를 다시 answerArr 에 담는다.
  4. 마지막으로 answerArr 에 sort로 오름차순 정렬을 하여 리턴한다.

<다른 사람 풀이>

기본 골자는 내 풀이와 유사하였지만 Set의 처리가 보다 매끄러운 팀원의 풀이를 보았다.

나처럼 Set을 만들고 그걸 배열로 다시 만드는 방식이 아닌, 그냥 Set을 스프레드 연산자로 풀어서 배열에 넣는 것을 확인했다. Set에 스프레드 연산자를 사용할 수 있다는 사실 자체를 몰랐기에 그걸 안 것 만으로도 큰 수확이다.

personal remark

요즘 TypeScript 배우느라 정신이 하나도 없다. 배운게 없어서 TIL에 연습문제 풀이만 기록하고 넘어가는 것이 아니라 오히려 반대로 배운게 너무 방대하고 TS공부 하는것이 벅차서 TIL에 정리해둘 심적, 시간적 여유가 나질 않는 것이다.

분명 TS에 익숙해지면 TS를 쓰는 것이 안쓰는 것보다 더 편하다는 이야기는 많이 들었는데 아직은 TS 기본 문법만으로도 헷깔리는 단계라 TS 쓰는게 더 편하다는 것이 어떤 의미인지 짐작이 가지 않는다.

지금은 오히려 TS를 써서 더 에러가 많이 나고 개발과정이 더뎌진다는 인상을 받고 있는데 그건 분명 현재 내 숙련도가 부족한 탓일 것이다.

그래도 한가지 기쁜 점은 TS 배우는 것을 계기로 이전과 달리 적극적으로 class 를 사용하기 시작했다는 것이다. 지금까지 항상 object literal 만을 사용해서 객체를 다뤄왔는데 class 사용하는 것을 공부하고 실제로 코딩 할때 적용해 보니 재미도 있고 편하면서 신기하기도 하다. 매일 많은걸 배우고 빠르게 발전하고 있다는 느낌은 정말 즐겁다.

0개의 댓글