프론트엔드
10주차 일요일 - Flex 복습, 과제 리팩토링
10주차 일요일 - Flex 복습, 과제 리팩토링 1. 배운 것 flex 복습 linear-gradient 과제 css 구현 2. 내용 정리 CSS/ Flex 부모 안의 자식 요소들을 flex 레이아웃으로 정렬하려면 부모에게 display: flex 사용. 이 때 부모 요소의 높이(height)가 지정되어 있는 경우 기본값은 자식들의 높이도 부모의 높이만큼을 가진다. → align-items의 기본값. CSS/ Flex - Axis, flex-direction Flex 정렬 시 2가지의 축을 기준으로 위치를 정렬한다. main axis (메인축) : 아이템이 배치된 방향의 축. cross axis (교차축) : 메인축과 수직을 이루는 축. Flex 속성은 Container에 적용하는 Container 속..
10주차 토요일 - 과제 리팩토링, new Map();
10주차 토요일 - 과제 리팩토링, new Map(); 1. 배운 것 과제 베어미니멈 파트 복습 css flex 복습 2. 내용 정리 과제 복습 - Modal Component 동작이 거꾸로 작동. 모달창 외부 클릭시 아무 변화 없고 모달창을 클릭 시 모달창이 닫힘. stopPropagation 이해도 부족. css 문제: 모달창 요소가 모달창 배경 좌상단 끝에서 안움직임. 과제 복습 - Toggle Component // 조건부 스타일링: 조건에 따라 클래스 추가 className={`toggle-container ${isOn ? 'toggle--checked' : null}`} CSS: 토글버튼 좌우로 움직이게 + 그라디언트 구현해야 함. 과제 복습 - Tab Component CSS: 탭 메뉴와 선..
10주 5일차 - react custom component 과제
10주 5일차 - react custom component 과제 1. 배운 것 flex 사용 시 요소 중앙정렬 시키는 방법 css- position 속성 복습 css 선택자 - 자식 결합자 styled-components의 attrs 메서드 event.key 이벤트 버블링 e.target.value false 조건 2. 내용 정리 flex 사용 시 요소 중앙정렬 시키는 방법 container { display: flex; justify-content: center; align-items: center; height: 100%; position: relative; } CSS - position 속성 복습 요소의 위치를 지정하기 위한 속성으로 5가지(static, relative, absolute, fixe..
10주 4일차 - [React] Custom Component
10주 4일차 - [React] Custom Component 1. 배운 것 styled-component 기초, props 사용법 storybook 사용법 useRef 사용법, 필요한 상황 css - transition 2. 내용 정리 1. Styled Components 기본 사용법 jsx 문법을 사용하지 않으므로 import React from ‘react’; 는 필요 없음. 개발자 도구로 styled-components로 생성한 컴포넌트의 클래스명을 보면 랜덤한 문자들의 나열로 된 걸 볼 수 있다. 따라서 클래스명이 겹칠 일이 없으므로 전역 css지만 스타일이 중첩될 일이 없다. 가상 클래스는 &:hover {css 스타일링 작성} 이런 식으로 작성함. 중첩되는 요소도 & 요소 {css 스타일링}..
10주 3일차 - 피그마 2/ 알고리즘
10주 3일차 - 피그마 2/ 알고리즘 1. 배운 것 데일리 코딩 5번 풀이 - DP 메모이제이션 복습 데일리 코딩 4번 리팩토링 - new Set 사용 new Set(); new Map(); 2. 내용 정리 데일리 코딩 5번 - DP 메모이제이션 let tiling = function (n, memo = [undefined, 1, 2]) { // dp - memoization 사용 // 처음 1개의 타일은 1가지 경우, 2개의 타일은 2가지 경우 // 그 외 n개의 타일의 경우의 수 = n-1개의 경우의 수 + n - 2 개의 경우의 수. // 즉 피보나치 수열 공식과 동일함. // 풀이 // 1. 하위 문제의 답을 저장할 memo 배열 선언 -> 매개변수에서 바로 // 2. if n === 1 ret..
10주 2일차 - 피그마
10주 2일차 - 피그마 1. 배운 것 피그마로 프로토타입 제작 2. 내용 정리 overflow된 항목은 프레임으로 묶여 있어야 prototype 탭에서 효과 적용 가능. → 우클릭 해서 frame selection. 프레임 크기 조정 시 내부 요소가 fixed 되어 있어야 내부 요소가 움직이지 않음. → 좌측의 layers 탭에서 해당 프레임 안의 요소들 선택 후 우측 design 탭에서 constraints 항목에서 고정 방향 지정. 예제는 좌측, 상단 2개 방향 지정. 캐러셀 카드 아이템 스크롤 효과 개선을 위해: 사각형 도형을 그린다. 도형을 해당 프레임 안에 넣고 우클릭: send to back 하여 한 레이어 내린다. 도형의 배경색을 Design 탭에서 기존 화면의 색과 일치하게 흰색으로 바꿔..
10주 1일차 - 휴가 사용(알고리즘 보충학습)
10주 1일차 - 휴가 사용(알고리즘 보충학습) 1. 배운 것 해시 테이블 - 별도 문서로 정리. https://github.com/ryan-kim-dev/data-structures-and-algorithms/blob/master/dataStructures/hash.md 버블 정렬 백준 1920번 프로그래머스 완주하지 못한 선수 2. 내용 정리 데일리 코딩 3번 - 버블 정렬 // 외부 for문: 배열 전체 순회 // 내부 for문: 요소 2개끼리 비교 & 정렬 완료된 뒷부분 반복에서 제외시키기 위해 -1 -i // noSwap: 정렬이 일어나지 않으면 break시켜 불필요한 연산 스킵 const bubbleSort = function (arr) { let noSwap; for (let i = 0; i..
9주 5일차 - JSON
9주 5일차 - JSON 1. 배운 것 JSON ↔ 객체 2. 내용 정리 코플릿 14번 복습 재귀 호출의 결과가 true일 경우에만 리턴을 주어야 이차원 배열이 있는 일차원 배열의 다음 요소로 넘어간다. 코플릿 15번 복습 for문 안에서 이차원 배열과 이차원 배열이 아닌 경우를 front, mid, end 세 변수에 나눠서 담고 1차원 배열로 합친다. 과정도 [1, 2, [3, 4], 5] 인 경우 [1, 2] [3, 4] [5] 로 만들고 […[1, 2], …[3, 4], …[5]] concat 또는 spread로 하나의 배열로 합친다. [1, 2, 3, 4, 5] function flattenArr(arr) { for (let i = 0; i < arr.length; i++) { if (Array...
9주 4일차 - 재귀, dp
9주 4일차 - 재귀, dp 1. 배운 것 데일리코딩 1번 내장함수 sort 사용하여 오름차순/내림차순 정렬하기 Math.max() 코플릿 재귀 재귀로 배열 관련 문제에서 head, tail 활용 arr.slice(1) : 맨 앞 요소 하나 빠진 나머지를 리턴. Object.keys(obj).length === 0 이면 빈 객체. dp - 별도 포스팅으로 정리. 2. 내용 정리 데일리코딩 1번 브루트 포스 방법으로 푸신 분들도 있었다. 아직 안배워서 난 모름 오름차순으로 기존 배열 정렬. 3개의 요소를 곱해야 하므로 오름차순 정렬 시 왼쪽 끝에서부터는 음수 쪽 최댓값, 오른쪽 끝에서 역순으로는 양수 쪽 최댓값 이므로 양수 쪽 최댓값은 오른쪽 끝부터 3개를 곱하고 음수 쪽 최댓값은 왼쪽끝부터 2개 곱하고 ..
9주 3일차 - 섹션2 회고, 재귀, dp
9주 3일차 - 섹션2 회고, 재귀, dp 1. 배운 것 동적 프로그래밍 재귀 복습 2. 내용 정리 재귀, DP 별도 문서로 정리중. https://handsome-parcel-51e.notion.site/DP-b9c9f5bf69594e768f652057fbfbd709 백준 10870번 피보나치 수 5번 const fs = require('fs'); const filePath = process.platform === 'linux' ? '/dev/stdin' : './input.txt'; let input = fs.readFileSync(filePath).toString(); input = Number(input); function fib(n) { if (n === 0) return 0; if (n ===..