본문 바로가기
알고리즘/Programmers

[TIL] 2023.04.05 기술면접 스터디, Programmers 문제 풀기

by heereal 2023. 4. 5.

Today I Learned

  • Programmers 문제 풀기
  • 기술면접 스터디

 


Programmers 문제 풀기

직사각형 넓이 구하기

나의 풀이

function solution(dots) {
    let xDots = [];
    let yDots = [];
    dots.forEach((v) => {
        xDots.push(v[0]);
        yDots.push(v[1]);
    });
    return Math.abs(Math.max(...xDots) - Math.min(...xDots)) * Math.abs(Math.max(...yDots) - Math.min(...yDots));
}

x와 y 좌표를 배열로 따로 만든 후에 각 배열의 최솟값, 최댓값을 이용해 직사각형의 넓이를 구한다. 다른 사람들 풀이 보니까 다들 비슷하게 풀었는데 내 답안에서 Math.abs로 절댓값을 구하는 과정을 불필요한 부분이었다.

 

알고리즘 공부 시작한 초반에 뭇 풀었다가 지금에서야 통과한 문제이기 때문에 꾸준히 발전하고 있구나 싶어서 뿌듯하다 ㅎㅎ

 


기술면접 스터디 CS 지식

순수함수란 무엇인가요? 불변성과 사이드 이펙트와 연결하여 설명해 주세요.

// 순수 함수 (pure function)
const a = (x, y) => x + y;
const b = (arr, value) => arr.concat(value);
const c = arr => [...arr].sort((a, b) => a - b);

// 순수함수가 아닌 함수
// 항상 같은 결과를 return 하지 않음
const a = (x, y) => x + y + Math.random(); 
// 전달받은 arr에 value를 넣어서 데이터를 변경함
const b = (arr, value) => (arr.push(value), arr); 
// arr를 정렬해서 순서가 바뀌게 함
const c = arr => arr.sort((a, b) => a - b);

순수함수는 아래 조건을 만족하는 함수이다.

  • 동일한 인자가 전달되면 항상 동일한 결과를 return하는 함수
    • 동일한 인자가 들어갈 경우 항상 같은 값이 나와야 한다.
    • return 값으로만 소통한다.
  • 함수의 바깥 영역에 side effect(부수 효과)를 초래하지 않는 함수
    • 함수 외부의 데이터나 함수에 전달된 데이터를 변경하지 않는 함수
    • 참조 또는 전역 변수 / 객체에 의해 전달된 매개변수를 수정하는 것과 같은 관찰 가능한 부작용을 일으키지 않아야 한다.

 

순수 함수의 장점

  • 순수 함수는 실행 시점이 중요하지 않다.
    • 순수 함수가 가지는 가장 큰 매력은 바로 실행되는 시점과 상관없이 항상 동일한 결과를 만들어내는 것이다. 다르게 말하면 멀티스레드 환경에서든 비동기적인 상황에서든 언제나 안전하게 믿고 사용할 수 있다. 반면 순수하지 않은 함수는 외부에 정의되어 있는 요소에 따라 결과가 판이하게 바뀌기 때문에 어떤 결과를 만들어 낼지 예측이 불가능하다.
  • 순수 함수는 조합성을 높여준다.
    • 순수 함수는 예측이 가능한 결과를 반환하기 때문에 다른 순수 함수들과 조합해서 사용하기가 용이하다. 즉 재사용성이 좋다고 말할 수 있고 대체적으로 하나의 기능에 충실하기 때문에 응집도가 매우 높아 유지보수가 편리한 부분도 있다.
  • 유닛테스트에 용이하다.
    • 외부 환경에 의존하지 않기 때문에 코드를 테스트하기 굉장히 쉬워진다.
  • 신뢰할 수 있다. (안전성)
    • 실행 시점이나 실행 컨텍스트에 따라서 결과가 변경되지 않기 때문에 신뢰할 수 있다.

 

참고자료

https://7942yongdae.tistory.com/143

https://2ssue.github.io/common_questions_for_Web_Developer/docs/Programming/pure_function.html

 

 

React의 state와 props에 대해서 설명해 주세요.

state

  • 컴포넌트 내부에서 관리하고, 데이터를 변경할 수 있음
  • 함수형 컴포넌트에서 state를 사용하기 위해 useState라는 Hook을 사용
  • state를 업데이트를 하려면 setState()를 사용
  • state가 변경되면 컴포넌트가 리렌더링됨

 

props

  • 부모 컴포넌트가 자식 컴포넌트에 값을 전달할 때 사용
  • props는 읽기 전용이므로 컴포넌트의 내부에서 props를 변경할 수 없음

 


회고

할 일이 많은데 진행이 잘 안 되는 거 같다. TIL에 기록해 두고 빨리 처리해야지!

  • 내일 16시까지 이력서 최종 수정하기
  • 내일배움캠프 수료 후기 글 작성
  • 원티드 프론드엔드 강의 내용 복습
  • 면접 인성 질문 등 답변 추가 정리
  • 해커랭크에서 알고리즘 문제 풀기 (코테 준비)
  • 로켓펀치, 점핏 등에도 이력서 등록하기
  • 시간 되면 깃헙 꾸미기 (readme)

 

 

 

댓글