Skip to content

Latest commit

 

History

History
297 lines (187 loc) · 10.1 KB

1주차.md

File metadata and controls

297 lines (187 loc) · 10.1 KB

8월 1일

오늘 한일

이력서 작성

  • 멋쟁이 사자처럼 교육 이력서 작성중

배운 것


어려웠던 점


한줄평


8월 2일

오늘 한일

이력서 작성

  • 워버딩 인턴 이력서 작성완료

React 복습

  • 노마드 코더 React 강의 복습
  • 코드 챌린지3, 졸업 과제 복습

배운 것


어려웠던 점


한줄평

오늘도 수고했어!! 공부할 때 집중하면서 하자. 어제 전한길 강사가 이야기 했던 것 처럼 10시간 동안 집중안하고 앉아 있는게 가장 멍청한 행동이야. 그냥 앉아 있는다고 해서 공부가 아니라고. 착각하지 말라고. 힘들고 짜증나고 식은땀나도 집중해서 내가 공부하고 있는 것을 이햐해야 하고 최대한 빨리 할 수 있는 것은 빨리하는 것이 좋아. 질질 끌지말고. 앉아서 딴생각 하는 것은 아무나 할 수 있고 그렇게 하면 2년을 해도 개발자 못되. 정신차리고 평소에 집중하는 습관을 계속 기르자. 그리고 어려운 것이 있어도 부딪히자. 할 수 있다.


8월 3일

오늘 한일

이력서 작성

  • 멋쟁이 사자처럼 프론트엔드 스쿨 이력서 작성중

React 복습

  • 노마드코더 React 복습
  • 졸업과제 복습

코딩 테스트

  • 알고리즘 기초 Part 1 다이나믹 프로그래밍문제 풀이
  • 1,2,3 더하기, 이친수, 가장 긴 증가하는 부분 수열, 가장 긴 증가하는 부분수열 4 풀이

배운 것


어려웠던 점

React 복습


Search 페이지 검색창에서 검색시 바로 랜더링 되지 않는 문제

  • 검색창에 keyword 입력하고 검색해도 바로 랜더링 되지 않고 새로고침해야 랜더링 됬음
  • url의 keyword 정보를 가지고있는 변수(changeKeyword)가 바뀔 때마다 keyword 수정
    • usEffect 사용
  • keyword가 바뀔때마다 key를 변경
    • useQuery의 key 값이 똑같아서 캐시에서는 똑같은 것 랜더링 했던 거였음
  • changeKeyword가 null일 때는 keyword의 상태를 유지
    • 사진 클릭 시 미리보기가 렌더링 되면 url이 수정되어서 changeKeyword가 null로 초기화
    • 위에서 changeKeyword가 수정될 때 마다 keyword를 수정하기로 했는데 null일 때도 수정하면 keyword가 null이 되므로 이전 페이지 상태를 유지하지 못함
const changeKeyword = new URLSearchParams(location.search).get("keyword");
const [keyword, setKeyword] = useState(changeKeyword);
useEffect(() => {
  // changeKeyword가 null일 때는 keyword 상태를 유지
  if (changeKeyword) {
    setKeyword(changeKeyword);
  }
}, [changeKeyword]);

const { data: tvData, isLoading: tvDataLoading } = useQuery<IGetSearchResult>(
  // keyword를 입력함으로써 독립된 key를 생성
  // 뒤에 tv를 붙여줌으로써 밑의 movie 데이터와 key를 구분
  ["content", keyword + "tv"],
  () => searchTv(keyword),
  {
    refetchOnWindowFocus: false,
  }
);

const { data: movieData, isLoading: movieLoading } = useQuery<IGetSearchResult>(
  ["content", keyword + "movie"],
  () => searchMovie(keyword),
  {
    refetchOnWindowFocus: false,
  }
);

한줄평

오늘도 수고했어! 오늘 집중 거의 안했는데 항상 말하지만 이렇게 공부하면 절대 개발자 못하고 인생 사는것에 있어서 항상 외부 탓하고 제대로 된 성과를 내지 못한체로 살아갈 거야. 그저 시간을 채우는 것은 어떻게 보면 안하는 것보다 더 위험한 행동일 수 있어. 지금이야 집중하지 않는 것이 잘못되었다고 조금이라도 인지하지만 시간이 흐를수록 이것을 인지하지 못하고 그저 잘하고 있고 타인보다 대단하고 열심히 하고 있다고 착각 할때니까... 온전히 집중해서 몰입한 상태에서 이해해야 진짜 공부를 했다고 말할 수 있어. 힘들어도 집중해야 되고 어려워도 집중해야 되. 정말 하다가 구토가 올라오고 쓰러지기 전까지는 힘들어도 앉아 있어야하고 앉아서 집중해야해. 앉아만 있는다고 절대 잘하고 있는 것 아니고 꼭 정말 집중을 해야되. 제발 정신차리고 망상이랑 착각 속에서 살지말자. 10시간 공부했다고 제발 자만하지말고 진짜 아무것도 아니니까. 그저 이해하고 몰입해서 공부했으면 오늘하루 나한테 고생했고 내일은 더 잘할 수 있다고 격려하면서 해야지. 그리고 집중을 하지 않았던 집중을 해서 공부를 했던 절대 자만하지마. 아무것도 아니야. 제발 정신차리고 조금만 더 집중하면서 살자. 고생했어.


8월 4일

오늘 한일

이력서 작성

  • 멋쟁이 사자처럼 프론트엔드 스쿨 이력서 작성중

React 복습

  • 노마드코더 React 강의 복습
  • 2차 과제(ToDoList) 복습

코딩 테스트

  • 알고리즘 기초 Part 1 다이나믹 프로그래밍문제 풀이
  • 1,2,3 더하기5, 쉬운 계단 수 해설, 가장 긴 증가하는 부분 수열4, 연속합, 제곱수의 합 풀이

배운 것


어려웠던 점

백준 1,2,3 더하기 5

import sys
test = int(sys.stdin.readline())
nums = list(int(sys.stdin.readline()) for _ in range(test))
max_num = max(nums)

dp = [[]] * (max_num + 1)
dp[1] = [1, 0, 0]
dp[2] = [0, 1, 0]
dp[3] = [1, 1, 1]
for idx in range(4, max_num + 1):
    first = (dp[idx - 1][1] + dp[idx - 1][2]) % 1000000009
    second = (dp[idx - 2][0] + dp[idx - 2][2]) % 1000000009
    third = (dp[idx - 3][0] + dp[idx - 3][1]) % 1000000009
    dp[idx] = [first, second, third]
for item in nums:
    print(sum(dp[item]) % 1000000009)

풀이

  • 그 다음 값을 구함에 있어 1000000009로 나눠주지 않으면 아주 큰수가 누적되어 저장되므로 메모리 초과 발생

출처


백준 쉬운 계단 수

n = int(input())
dp = [[0] * 10 for _ in range(n + 1)]
for idx in range(1, 10):
    dp[1][idx] = 1

for idx in range(2, n + 1):
    for j in range(10):
        if j == 0:
            dp[idx][0] = dp[idx - 1][1]
        elif j == 9:
            dp[idx][9] = dp[idx - 1][8]
        else:
            dp[idx][j] = dp[idx - 1][j - 1] + dp[idx - 1][j + 1]

print(sum(dp[-1]) % 1000000000)

풀이

  • 이중 배열 안에 자리수에 따라 0부터 9의 경우의 수(해당 숫자에 연결된 고리 개수) 배열 저장
  • 자리수가 1개 일때는 1부터 9까지 가능하므로 전체 배열에 [0, 1, 1, 1, 1, 1, 1, 1, 1] 추가
  • 자리수가 2개 부터 규칙을 발견
    • 0 => 앞 자리의 1이랑 만 연결될 수 있음 => dp[idx][0] = dp[idx - 1][1](앞자리 1의 경우의 수)
    • 9 => 앞 자리의 8이랑 만 연결될 수 있음 => dp[idx][9] = dp[idx - 1][8](앞자리 8의 경우의 수)
    • 1~8 => 앞 자리의 현재 수 +1, -1 값과 연결 될 수 있음 => dp[idx][현재 수] = dp[idx - 1][현재수 - 1] + dp[idx - 1][현재수 + 1]

출처


한줄평

오늘도 수고했어! 아직 많이 부족하지만 오늘처럼 집중하면서 해야해. 프로젝트 할 때 모르는 것을 구글에서 찾을 때는 시간을 투자 하는 것이 맞지만 빨리 할 수 있는 것은 정신차리고 집중해서 빨리빨리 쳐내야 되. 질질 끌면서 몇 시간 공부했다고 착각하는 것 만큼 비효율적이고 멍청한 망상이 없어. 빨리 할 수 있는 것은 빨리 처리하고 도저히 못하겠거나 새로운 개념이 나왔을 때는 조금 시간이 걸리더라도 숙지하는 것이 좋아. 물론 시간을 투자한다고 해서 멍때리거나 너무 여유부리지 말고 최대한 집중은 해야되. 다만 이 시간은 빨리 하는 것보다 이해하는 것이 더 중요하니까 빨리하는 것에 얽매이지는 말자. 코딩 테스트 공부도 마찬가지고. 내일도 화이팅 해보자!


8월 5일

오늘 한일

이력서 작성

  • 멋쟁이 사자처럼 프론트엔드 스쿨 이력서 작성완료

React 복습

  • 노마드 코더 React 강의 복습
  • 2차 과제 및 개념 복습

코딩 테스트

  • 알고리즘 기초 Part 1 다이나믹 프로그래밍문제 풀이
  • 합분해 풀이

배운 것

React vs JS

  • JS 파일에서 했던 HTML 태그 생성, 태그 선택, 태그에 이벤트 리스너 추가 를 React에서는 한번에 할 수 있다.
  • HTML, CSS, JS 파일로 나눠서 작업을 하지 않아도 된다.
  • Virtual DOM을 통해 웹 사이트의 상태가 변경될 때 마다 전체적으로 렌더링 되지 않고 수정된 부분만 다시 렌더링
  • HTML을 이용해 ToDoList 프로젝트를 진행할 경우 하나의 HTML 파일에 모든 태그를 마크업 해야 하는데 그러게 되면 재사용유지 보수 가 어려움. 반면에 React는 기능 혹은 목적 별로 여러 Component를 가지고 있기 때문에 재사용과 유지 보수가 수월함
  • ApexCharts, Framer-Motion, React-Hook-Form과 같이 사용자에게 좋은 UI를 제공할 수 있도록 도와주는 라이브러리 가 많다.
  • JS 파일은 변하는 데이터를 하나의 파일에 기능 로직과 함께 작성하는데 비해 Recoil 라이브러리를 통해 변하는 데이터(state)를 atom(Recoil일 경우)을 통해 관리해 재사용, 유지 보수성, 가독성을 높일 수 있음

어려웠던 점


한줄평

오늘도 수고했어! 제발 집중하면서 공부하고 집중하지 않으면 내 인생은 힘들어지고 이룰 수 있는 것은 없다 라는 사실을 명심해.


8월 6일

오늘 한일

React 공식문서

  • React 공식문서 읽기

배운 것


어려웠던 점


한줄평