Skip to content

Latest commit

 

History

History
410 lines (267 loc) · 11.3 KB

5주차.md

File metadata and controls

410 lines (267 loc) · 11.3 KB

7월 24일

오늘 한일

React 강의

  • 노마드 코더 React 강의 수강
  • 배열을 이용한 css 속성
  • transform-origin
  • useAnimation
  • useViewportScroll
  • useNavigate

배운 것

React 강의

배열을 이용한 css 속성

  • 애니메이션을 사용할 때 css 속성의 배열을 통해 설정할 수 있다.

transform-origin

  • 애니메이션이 시작하는 위치를 수정할 수 있음
const Box = styled(motion.div)<{ bgPhoto: string }>`
  ... 
  // 양끝 포스터의 애니메이션
  &:first-child {
    transform-origin: center left;
  }
  &:last-child {
    transform-origin: center right;
  }
`;

useAnimation

  • 소스코드를 통해 애니메이션을 적용할 때 사용
  • start 메소드 사용
  • 여러개의 애니메이션을 넣고 싶을 때 사용
import { useAnimation } from "framer-motion";

const inputAnimation = useAnimation();
const navAnimation = useAnimation();

const toggleSearch = () => {
  if (searchOpen) {
    inputAnimation.start({
      scaleX: 0,
    });
  } else {
    inputAnimation.start({ scaleX: 1 });
  }
  setSearchOpen((prev) => !prev);
};
useEffect(() => {
  scrollY.onChange(() => {
    if (scrollY.get() > 80) {
      navAnimation.start("scroll");
    } else {
      navAnimation.start("top");
    }
  });
}, [scrollY, navAnimation]);

<Nav variants={navVariants} animate={navAnimation} initial={"top"}>
<Input animate={inputAnimation} />;

useViewportScroll

  • 스크롤을 움직일 때 마다 progress와 positon 정보를 반환한다.
import { useViewportScroll } from "framer-motion";

const { scrollY } = useViewportScroll();

useEffect(() => {
  scrollY.onChange(() => {
    if (scrollY.get() > 80) {
      navAnimation.start("scroll");
    } else {
      navAnimation.start("top");
    }
  });
}, [scrollY, navAnimation]);

useNavigate

  • URL을 왔다갔다 할 수 있다.
  • 여러 route 사이를 이동할 수 있다.
import { useNavigate } from "react-router-dom";

const navigate = useNavigate();

// 영화 포스터를 클릭했을 시
const onBoxClicked = (movieId: number) => {
  navigate(`/movies/${movieId}`);
};

어려웠던 점


한줄평

이번주도 수고했어!!! 내일부터 집중해서 열심히 하자!


7월 25일

오늘 한일

React 강의

  • 노마드 코더 React 강의 수강
  • 졸업과제

배운 것


어려웠던 점


한줄평

오늘 졸업과제 하느라 수고했어. 오늘은 졸업과제 빨리 해야되기 때문에 모르는 것도 대충봤지만 끝나고 복습이나 보완할 때 마저도 구글 1페이지라도 꼼꼼히 안보면 개발자 포기하고 공장가자. 공장 무시하지말고. 오늘처럼 모르는 거 있는데도 대충보고 그러면 그만둬. 힘들어도 해야되. 오늘 수고했고 보완할 때 마저도 대충넘기면 진짜 그만두자. 공부로 삶을 성실하게 살고 있다고 보험들어놨는데 조금 어려우니까 공부를 안하는 거잖아(자리에 앉아 있다고 공부하는게 아니야). 진짜 이렇게 할거면 개발자 하지말아야 되. 자존심은 있어가지고 이력서나 면접 안보는 곳에서는 일 못하니까 억지로 하고 있는것 같은데 할꺼면 그 분야에서 하는 최소한의 습관(모르는 거 있을 때 구글 꼼꼼히 읽는 것)은 해야되. 진짜 힘들더라도 구글링 할때 진짜 꼼꼼히 읽자. 너무 쉽게 편하게 공부하려고 한다. 강의나 과제는 시간안에 빨리해야 하니까 그럴수도 있지만 지금부터는 하나씩 모르는 거 집중하고 이해해서 구글링 하자. 화이팅!!


7월 26일

오늘 한일

React 강의

  • 노마드 코더 React 강의 수강
  • 졸업과제 완료

배운 것


어려웠던 점


한줄평


7월 27일

오늘 한일

React 강의 복습

  • 노마드 코더 React 강의 복습

코딩 테스트

  • 알고리즘 기초 Part 1 수학 1(연습)문제 풀이
  • 골드바흐 파티션 해설

배운 것


어려웠던 점

코딩테스트


백준 골드바흐 파티션

import sys
import math

n = int(sys.stdin.readline())
nums = list(int(sys.stdin.readline()) for _ in range(n))
max_num = max(nums)
data = [False, False] + [True] * (max_num - 1)
for idx in range(2, int(math.sqrt(max_num)) + 1):
    if data[idx]:
        for j in range(idx + idx, max_num + 1, idx):
            data[j] = False

for num in nums:
    result = 0
    for idx in range(num // 2 + 1):
        if data[idx] and data[num - idx]:
            result += 1

    print(result)

풀이

  • 소수리스트 만들 때 data = [False, False] + [True] * (max_num - 1)처럼 0과 1 index에 False를 먼저 넣는 방법이 편한 것 같음
  • 테스트 케이스로 입력받은 수 중에 가장 큰 수를 기준으로 소수 리스트(에라토스테네스의 체) 만들어 주기
    • 시간복잡도에는 영향을 주지 않는다.
  • 숫자의 전체 범위를 탐색하지 말고 반절만 탐색해도 된다
    • 이 부분이 시간복잡도에 많은 영향
    • 반복문 도중 현재 숫자(소수)와 또 다른 수(소수)를 False로 일일이 check 할 필요가 없다.
    • 10 같은 경우 (3 7), (5 5)가 있는데 1부터 10까지 check 할 필요 없고 5까지만 check 하면 소수 + 소수 = 짝수에 해당하는 값을 구할 수 있음

출처


한줄평

오늘도 수고했어! 집중하면서 열심히 하지 않으면 절대 개발자가 될 수 없어. 힘들도 배가 아파도 집중하면서 해야되. 절대 쉽게 무엇인가를 이룰 수 없어. 뭐든지 힘듬과 고통을 참아가면서 원하는 것을 얻을 수 있고 그 원하는 것을 통해 행복함을 느낄 수 있어. 다 떠나서 무엇인가를 목표로 한다면 힘든것이 당연하거고 그 과정에 있어 항상 집중하고 누가 뭐라고 해도 몰입하는 상태가 되어야만 그 목표를 이룰 수 있어. 평소에도 다른 생각하지말고 현재에 집중하면서 살아가자. 화이팅! 힘들지만 가치있고 행복한 삶을 살 수 있을거야!


7월 28일

오늘 한일

이력서 작성

  • 비누랩스 이력서 작성완료

React 복습

  • 노마드 코더 React 강의 복습
  • Recoil
  • React Hook Form
  • selector
  • enum

코딩 테스트

  • 알고리즘 기초 Part 1 수학1(참고), 다이나믹 프로그래밍1 문제 풀이
  • 진법 변환2, 1로 만들기 해설, 진법 변환, Base Conversion 풀이

배운 것


어려웠던 점

백준 진법 변환2

n, div = map(int, input().split())
num = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"

result = ''
while n > 0:
    result = num[n % div] + result
    n //= div

print(result)

풀이

  • 나는 진법별로 수에대한 표현이 다르다고 생각
    • 11진법은 10을 10으로 표현한다고 생각
      • 10진법에서는 10을 A로 표현
    • 10진법 이상이면 문제에서 제시한 수의 체계를 사용
  • 수의 체계를 문자열로 미리 저장
  • 문자열에서 주어진 수를 나눈 나머지를 index로 하는 값을 결과값 앞에 추가, 주어진 수가 0이되면 종료

출처


백준 1로 만들기

n = int(input())
data = [0] * (n + 1)

for idx in range(2, n + 1):
    # 1을 빼는 방법
    data[idx] = data[idx - 1] + 1
    # 2를 나누는 방법
    if idx % 2 == 0:
        data[idx] = min(data[idx], data[idx // 2] + 1)
    # 3을 나누는 방법
    if idx % 3 == 0:
        data[idx] = min(data[idx], data[idx // 3] + 1)

print(data[n])

풀이

  • dp를 이용한 방법으로 앞에서 구한 결과값을 저장(메모제이션) 하였다가 후에 사용하는 것
  • 1을 빼는 방법, 2를 나누는 방법, 3을 나누는 방법을 통해 해당 숫자가 1로 갈 수 있는 최소 방법의 수 구함

출처


한줄평

오늘도 수고했어!!! 오늘 공부하면서 집중 많이 못했어. 그래도 중간에 집중 잡으려는 모습은 좋았는데 계속 그 싸움에서 이겨야 되. 공부할 때 말고도 항상 집중하는 습관을 길러야 할 것 같아. 그리고 어려운 것 피하지말고 부딪히자. 배가 아프고 짜증나고 식은땀 나도 그냥 해야되. 그냥 해도 될까 말까한게 이 세상이야. 집중하고 머리도 좀 쓰고 버티면서 하자. 수고했어!


7월 29일

오늘 한일

React 복습

  • 노마드 코더 React 강의 복습
  • Framer Motion
    • Variant
    • Gestures
    • useMotionValue
    • useTransForm
    • useViewportScroll
    • AnimatePresence
    • layoutId
    • useAnimation

코딩테스트

  • DP 개념영상 시청

배운 것


어려웠던 점


한줄평

오늘도 수고했어!! 무엇보다 가장 중요한 것은 매 순간 집중하는 거야. 시간을 채우면 잘하고 있고 열심히 하고 있다고 생각하고 있는데 착각이야. 공부를 함으로써 많은 시간이 소요되는 것은 당연한 것이지 하루 몇시간 공부했다고 무엇인가를 성취했고 대단하다고 생각하면 안되. 물론 시간을 보내면서 힘드니까 고생은 많은데 지금까지 니가 온전히 집중하면서 공부했어? 물론 집중하는것이 어렵고 습관이 안됬으니까 힘들지만 이제라도 알았으니까 집중하는 것을 훈련하기 위해 매순간 잡생각을 돌려놓도록 해야되고 하루 몇시간 했다고 제발 자만하지마. 아무것도 아니야 정신차려. 그저 집중해서 이해하고 힘들어도 꾸역꾸역 하는게 그게 다야.


7월 30일

오늘 한일

React 복습

  • 노마드 코더 React 강의 복습
  • useNavigate

배운 것


어려웠던 점


한줄평

오늘도 수고했어!! 무엇보다 가장 중요한 것은 매 순간 집중하는 거야. 시간을 채우면 잘하고 있고 열심히 하고 있다고 생각하고 있는데 착각이야. 공부를 함으로써 많은 시간이 소요되는 것은 당연한 것이지 하루 몇시간 공부했다고 무엇인가를 성취했고 대단하다고 생각하면 안되. 물론 시간을 보내면서 힘드니까 고생은 많은데 지금까지 니가 온전히 집중하면서 공부했어? 물론 집중하는것이 어렵고 습관이 안됬으니까 힘들지만 이제라도 알았으니까 집중하는 것을 훈련하기 위해 매순간 잡생각을 돌려놓도록 해야되고 하루 몇시간 했다고 제발 자만하지마. 아무것도 아니야 정신차려. 그저 집중해서 이해하고 힘들어도 꾸역꾸역 하는게 그게 다야.