전체 글
프론트엔드 테스트 Mock 목 활용하기
Mocking (모킹)(mock: 모조품)테스트할 때 의존하는 내부 또는 외부 요소를 가짜로 만들어 사용하는 방식입니다. 모킹은 실제 객체를 사용하지 않고, 해당 객체의 동작만을 흉내냄으로써 테스트를 독립적으로 수행할 수 있도록 합니다.모킹의 활용성: 테스트뿐만 아니라 로컬 개발 환경에서도 생산성을 높입니다. 예를 들어, JSONPlaceholder와 같은 가짜 API를 사용해 빠르게 테스트할 수 있습니다.독립적인 테스트: 상용 API, 데이터베이스, 라이브러리 등의 의존성 없이 코드의 동작을 독립적으로 테스트할 수 있습니다. 이는 테스트의 신뢰성을 높여줍니다.모킹의 필요성: 모킹을 사용하지 않으면 테스트 시간이 길어지고, 모든 인터페이스가 구현된 환경에서 테스트를 수행해야 하는 번거로움이 생깁니다. 필..
px, em, rem 차이를 알아보자
1. px px은 고정적인 단위이지만, 전세계의 1cm가 동일하듯이 모든 1px이 같은 것은 아니다. 픽셀은 모니터 해상도에 따라 고정적인 크기로 설정된다. 모니터가 바뀌지 않는 한, 브라우저에서는 절대적인 고정값으로 한번 설정된 크기는 변하지 않으므로 반응형 웹 구현이 아닌 경우 사용하는 것이 좋다. 2. em 가변적인 단위. 폰트 사이즈를 기준으로 계산된다. em 은 이 단위가 적용된 엘리먼트의 글자 크기에 비례한다. 상위 요소의 폰트 사이즈를 상속 받을 수 있다. px 보다는 반응형에 적합하지만, 상위 요소의 사이즈가 바뀌거나 뎁스가 깊어질수록 사이즈를 관리하기 어렵다. em 단위는 아래 예시처럼 계산된다. html { font-size: 10px; } body { font-size: 15px; }..
리액트 훅은 왜 조건문 안에서 쓸 수 없을까?
그 동안 리액트훅을 사용할 때 리액트 컴포넌트 함수의 최상위에서 훅을 항상 호출해서 사용했기 때문에 너무나 당연하게 조건문이나 반복문 안에서 사용할 생각을 하지 않았다. 하지만 왜 그렇게 하는 것인지에 대해 생각해보지 못했고, 오키 질문에도 나처럼 궁금해 하시는 분들이 계신 거 같아 이번 기회에 정리해서 함께 공유하면 좋을 거 같다. 실제로 현재 진행중인 프로젝트에서 조건문 안에 useEffect 훅을 호출하면 아래와 같이 린트 에러가 발생한다. 에러 메세지를 읽어보면, 리액트 훅은 렌더링 시 반드시 동일한 순서로 불려야 하기 때문에 조건적으로 호출되면 안된다고 말하고 있다. 실제 리액트의 공식문서에서도 리액트 훅과 관련된 규칙으로 다음과 같이 안내되어 있다. - 반복문, 조건문 혹은 중첩된 함수 내에서..
[자료구조] 그래프
1. 기본 개념 노드와 노드를 연결하는 간선을 하나로 모아 놓은 자료 구조, 연결되어 있는 객체 간의 관계를 표현하는 자료구조이다. 예) 지하철 노선도, 네트워크 연결, 도로, 페이지 랭크 2. 그래프 용어 정리 정점(node): 위치의 개념 간선(edge): 위치 간의 관계, 노드를 연결하는 선 정점의 차수(degree): 무방향 그래프에서 하나의 정점에 인접한 정점의 수 3. 종류 무방향 그래프(양방향) (A, B)는 (B, A) 동일 방향 그래프 는 는 다름 가중치 그래프 그래프의 간선에 비용(가중치)가 부여된 그래프 최소 비용, 최단 경로 등을 찾는 경우 연결 그래프 무방향 그래프의 모든 정점 쌍에 대해 항상 경로가 존재하는 경우 비연결 그래프 무방향 그래프의 특정 정점 쌍 사이에 경로가 존재하지..
[자료구조/알고리즘] 정렬 알고리즘에 대해 알아보자
선택 정렬(Selection Sort) 공간복잡도 O(N) / 시간복잡도 O(N^2) 첫 번째 인덱스부터 차례대로 그 뒤 숫자들을 모두 비교해서 가장 작은 값을 찾아 현재 인덱스와 자리를 바꿔준다. 즉, 맨 앞 인덱스부터 작은 수대로 채워 정렬하는 것(최소 선택 정렬), 반대는 최대 선택 정렬이다. 삽입 정렬(Insertion Sort) 공간복잡도 O(N) / 시간 복잡도 O(N^2), 최선의 경우(이미 정렬돼 있는 경우는 한번 밖에 비교하지 않아서) O(N) 삽입 정렬은 두 번째 인덱스부터 시작한다. 현재 인덱스는 별도의 변수에 저장, 비교 인덱스를 현재 인덱스 -1로 시작해서 -1씩 해가며 요소를 비교하고 적절한 위치를 찾아 삽입된다. 즉, 두 번째 요소는 첫 번째 요소와 비교. 세 번째 -> 두 번..
[프로그래머스] 2022 KAKAO TECH INTERNSHIP/등산코스 정하기/파이썬/python
💡 solutions 💬 heap 자료 구조 사용, 각 출입구들을 노드로 넣고 다익스트라 알고리즘 탐색 💬 1. 산봉우리는 한 개만 지나야 하므로 탐색 노드가 산봉우리인 경우 탐색 중단 💬 2. 해당 노드를 지났던 기존 intensity(dist[node])가 현재의 intensity 보다 작은 경우는 이미 더 작은 intensity로 해당 노드를 지날 수 있다는 의미이므로 탐색 중단하도록 조건 처리 💬 각 노드의 intensity를 저장하는 dist 배열에서 값을 업데이트 할 때는 최대 intensity (현재 intensity, 다음 노드의 intensity 중 큰 값)로 저장한다. 💬 산봉우리들을 비교하여 가장 작은 intensity를 갖는 경우를 답으로 반환한다. 단, intensity가 동일한 ..
[프로그래머스] 2022 KAKAO TECH INTERNSHIP/두 큐 합 같게 만들기/파이썬/python
💡 solutions 💬 첫 번째 풀이, deque 자료 구조 활용하여 반복문으로 두 큐의 합 같게 연산, 두 큐의 최대 길이만큼 반복했는데도 두 큐의 합을 같게 하지 못하면 -1 반환하는 조건 추가 💬 두 번째 풀이, 두 개의 큐를 하나의 큐로 합쳐서 투 포인터로 두 큐의 합이 같아지는지 확인 🤖 code # 첫 번째 풀이 from collections import deque def solution(queue1, queue2): queue1, queue2 = deque(queue1), deque(queue2) sum1, sum2 = sum(queue1), sum(queue2) target_sum = (sum1 + sum2) // 2 cnt = 0 if max(queue1) > target_sum or ..
[프로그래머스] 2022 KAKAO TECH INTERNSHIP/성격 유형 검사하기/파이썬/python
💡 solution 💬 질문에 따른 선택을 기준으로, 딕셔너리 자료 구조 활용하여 각 성격 유형별 점수를 먼저 구한다. 💬 4가지 각 지표별로 두 가지 성격 유형의 점수를 비교하여 최종적으로 성격 유형을 결정한다. 👨💻 code def solution(survey, choices): charactors_dict = { 'R': 0, 'T': 0, 'C': 0, 'F': 0, 'J': 0, 'M': 0, 'A': 0, 'N': 0, } # 모든 질문의 성격 유형 점수 계산 for i in range(len(survey)): current_question = survey[i] current_answer = choices[i] default_score = 4 if current_answer < default..