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)
'알고리즘 > Programmers' 카테고리의 다른 글
[TIL] 2023.04.08 Programmers_문자열 밀기 (0) | 2023.04.08 |
---|---|
[TIL] 2023.04.06 기술면접 스터디, Programmers 문제 풀기 (0) | 2023.04.06 |
[TIL] 2023.04.04 기술면접 스터디, Programmers 문제 풀기 (0) | 2023.04.04 |
[TIL] 2023.04.03 기술면접 스터디, Programmers 문제 풀기 (0) | 2023.04.03 |
[TIL] 2023.04.02 Programmers 문제 풀기 (0) | 2023.04.02 |
댓글