5월 16일 (월)
오늘 한 일
- leetCode 풀기
- 617. Merge Two Binary Trees
- 두 개의 이진 트리를 병합하는 문제였다. 처음에 문제만 보고 이게 뭐지? 싶었는데, node 값이 있다면 그 값을 더하고, 하나의 이진 트리만 node가 존재한다면 그 node를 넣어서 새로운 tree를 만드는 문제였다. 이번에는 강의를 듣지 않고 구글링을 하여 문제를 이해하는 방법을 사용했다. node를 병합하는 함수를 만들어 재귀 호출을 하면 쉽게 구현할 수 있었다.
- 116. Populating Next Right Pointers in Each Node
- 같은 level의 node로 포인터를 향하게 하는 문제였다. C언어를 잘 모른다면 포인터의 개념이 어려울 수 있는데, 그냥 연결 리스트의 next와 같은 개념이라고 생각하면 된다. 구글링을 하여 코드를 보아도 이해가 가지 않아, ppt로 그림을 그리고 디버깅을 활용하여 코드의 flow를 따라가보았다. BFS를 사용하면 또 쉽게(?) 풀 수 있는 문제였다.
- 617. Merge Two Binary Trees
- HTML 과제 4 만들기
- 보안과 개인정보
- <a> 요소는 사용자의 보안과 개인정보에 중요한 영향을 줄 수 있다.
- target="_blank"를 rel="noreferrer"와 rel="noopener" 없이 사용하면 웹사이트가 window.opener API 악용 공격에 취약해진다. 다만, 최근 브라우저(Firefox 79+ 등)는 target="_blank"를 지정하면 임의로 rel="noopener" 설정과 동일한 보호 수준을 적용한다.
- <a> 속성으로 target="_blank"를 사용할 때 rel="noopener" 를 같이 명시해주어야 보안 취약점을 보완할 수 있다.
- CSS 3번 요구사항 : 로고의 경우 /assets/logo/logo.svg 이미지를 배경으로 설정하고 “Coupang”이라는 텍스트는 스크린리더에서는 읽을 수 있지만 화면에는 보이지 않도록 구현해 주세요.
- 화면에는 보이지 않지만 스크린리더에서 읽을 수 있게 CSS를 구현한 적이 있다. 하지만 그 방법은 background를 포함하여 content를 숨기는 기능이라, 이미지만 보이게 하지 못했다. 내일 다시 한 번 더 확인해보아야 할 사항이다.
- 보안과 개인정보
- 인프런 모던 자바 스크립트 Deep Dive 스터디
- 4장 변수
- 변수 이름은 어디에 등록되는가?
- weakRef()
- 5장 표현식과 문
- 표현식인 문과 표현식이 아닌 문
- 완료값
- 4장 변수
- 리팩터링 2판 제로베이스 강의
- 2장 리팩터링 원칙
- 비전공자를 위한 이해할 수 있는 IT 지식
- 1장 오리엔테이션
- 2장 프로그래밍 언어 & 운영체제 (OS)
느낀 점
하나에 몇 시간씩 집중하는 것보다, 여러 일들을 돌아가며 하는 것이 훨씬 효율이 좋다고 생각한다. 오늘은 leetCode 알고리즘 풀이에 6시간 가까이 소요했던 것 같다. BFS, DFS를 좀 더 완벽히 이해하기 위함이다. HTML 과제 4를 시작했는데 그 전 과제들보다 난의도가 있는 것 같다. 아직 초기 부분인데 어떻게 구현해야 할지 모르겠는 것들이 있다. 내일은 HTML 과제 4 진도가 나가길 빈다.
5월 17일 (화)
오늘 한 일
- JavaScript 알고리즘 듣기
- 백트래킹 (backtracking)
- 동적 계획법 (Dynamic programming)
- JavaScript 클로저 듣기
- 1, 2, 3강 듣기
- HTML 반응형 디자인 듣기
- 1, 2, 3, 4, 5, 6, 7, 8, 9강 듣기
- leetCode 2문제 풀기
느낀 점
leetCode 문제가 상당히 난의도가 있었다. 해결 코드를 보아도 100% 이해가 가지 않았다... 내일 알고리즘 스터디원 분들의 설명을 들으며 더 깊은 이해가 필요할 것 같다.
자바스크립트의 클로저 개념도 난해하고 어려웠다. 자바스크립트를 사용하며 이게 왜 되지? 싶었던 것이 클로저라는 개념이라는 것을 알았다! 아직 클로저가 내 머리에 자리 잡은 건 아니지만 모던 JS를 공부하며 더 보충할 생각이다.
미라클 모닝을 하니 오후 시간에는 머리가 너무 아파서 집중이 잘 되지 않았다. (정확히는 미라클 모닝이 원인인지, leetCode의 난의도 때문인지 모르겠다.) 일찍 일어나 오후까지 공부에 집중할 수 있다면 좋을 텐데 전부 내 마음대로 되는 건 아닌 것 같다.
5월 18일 (수)
오늘 한 일
- HTML 과제 4
- 5월 16일 월요일, Coupang 로고를 텍스트로 마크업 후 background로 로고 사진을 띄우는 것을 해결하지 못했는데 해결!
- a11y.css에 가면 sr-only(스크린리더에만 읽히는) Class에 대한 css가 설정되어 있다. 이 클래스를 지정하면 컨텐츠 모든 내용이 보이지 않는다. width, height 값을 설정해주면 background-image 크기와 width, hieght크기가 일치하지 않는다. 이 문제는 background-size: cover로 설정하면 해결 가능하다.
- Grid 배치하기
- 우선 크게 column 3개로 나누고, 두번째 column 안에 row를 2개로 나누었다.
- column 1 : Button
- column 2 : logo + Search + nav
- row 1 : logo + search
- row1 serach form을 구현할 때, button을 추가하니 form 크기가 커졌다. (알 수 없는 빈 공간이 생겼다 😓) form 태그에 display : flex을 주니 해결됐다.
- row 2 : nav
- row 1 : logo + search
- column 3 : my coupang + cart
- Button 만들기
- logo + form 요소 만들기
- 마이 쿠팡 + 장바구니 만들기
- 5월 16일 월요일, Coupang 로고를 텍스트로 마크업 후 background로 로고 사진을 띄우는 것을 해결하지 못했는데 해결!
- leetCode 문제 풀기
- 코딩 테스트
- 역시나 어려웠다... 이번엔 solve 한 문제가 저번보다 반으로 줄었다 😂 풀릴 것 같으면서 풀리지 않은 문제들이 몇 개 있어 너무 아쉬웠다. 특히 Map 객체가 Array로 변환이 안되는 부분은 너무 답답했다. 아무리 구글링을 하고 그 방법을 시도해도 변환이 되지 않았다. 이번 주 주말에 다시 풀어볼 예정이다
5월 19일 (목)
오늘 한 일
- leetCode 문제 풀기
- 77. Combinations
- 숫자들의 조합을 구하는 문제였다. backtracking을 사용하여 재귀로 풀었는데 중간에 이해가 잘 가지 않는 부분이 있어 오전 모각코 시간을 전부 사용했다.
- 첫번째 요소를 정하고 두번째 요소를 재귀 호출해서 해결하는 건 이해했지만, 다시 첫번째 요소를 바꾸는 재귀 호출이 처음에 이해가 잘 되지 않았지만, 계속 디버깅해보니 이해 할 수 있었다. 이 시간들은 순열 문제를 풀 때 도움이 됐다.
- 46. Permutations
- 숫자들의 순열을 구하는 문제였다. 순열 backtracking은 이전에 제로베이스 알고리즘 강의에서 배운 적이 있어 그 코드를 참고했다. 제로베이스는 들어오는 원본 배열을 바꾸었는데 나는 새로운 result 배열을 만들고 그 배열에 순열 값을 넣어 반환했다.
- 전에 배웠을 땐 50%도 이해하지 못하고 넘어갔었는데, 오늘 다시 보니 쉽게 이해할 수 있었다. 처음 보는 것보다 두 번 보는 게 훨씬 속도가 빨라졌다.
- 784. Letter Case Permutation
- 이번에는 문자열의 소문자, 대문자 경우의 수를 구하는 문자열 순열 문제였다. backtracking을 하지 않고도 풀 수 있을 것 같아 for문으로 풀어보았다.
- foreach로 이전에 들어갔던 모든 요소들의 S[i]를 변환해야 한다는 것을 이해하지 못해 시간을 많이 사용했다. 이것도 여러 번의 디버깅으로 이해할 수 있었다. (디버깅은 나의 친구)
- 77. Combinations
- HTML 과제 4 하기
- 마이쿠팡 Hover 시 tooltip 표시하기
- tooltip arrow를 border로 표시하는 데에 시간을 (비교적) 많이 사용했다. 여러 자료를 보며 응용하니 내가 원하는 모양으로 사용할 수 있었다.
- 다른 팀원분은 figma - component에서 svg를 따와서 사용하셨다는데 나는 svg로 복사가 안됐다...😂😂 (사람 차별인가요...) 그래도 해결했으니 만족한다!
- 이 방법은 따로 블로그에 포스팅 해야겠다.
- 마이쿠팡 Hover 시 tooltip 표시하기
5월 20일 (금)
오늘 한 일
- HTML 과제 4 마무리 하기
- 어제 과제를 거의 다 마친 상황이라 오늘은 마무리 작업을 했다. 오전 모각코 시간 내에 끝낼 수 있었다!
- 오늘 했던 작업은 매우 쉬운 작업이었다. 리스트 요소를 inline-block으로 배치하기만 하면 됐다.
- 제로베이스 자바스크립트 문법 비동기 듣기
- 자바스크립트에서 비동기 함수를 배우는 것은 처음이었다. promise와 async await에 대해 배웠는데, 아직 100% 다 이해하지는 못했다. 예제 코드로 console.log로 찍는 것만 했었는데, 나중에 프로젝트에서 비동기 함수를 활용할 수 있는 단계까지는 아직인 것 같다. 모던 자바스크립트를 공부하며 더 보충할 계획이다.
- 공부한 내용은 블로그에 따로 올렸다.
'TIL (Today I Learned)' 카테고리의 다른 글
22.06.30~07.01_TIL (0) | 2022.07.01 |
---|---|
22.06.13~06.17_TIL (0) | 2022.06.15 |
22.06.06~06.10_TIL (0) | 2022.06.06 |
22.05.30~06.03_TIL (0) | 2022.05.30 |
2022.05.09 ~ 05.13_TIL (1) | 2022.05.10 |
Comment