알고리즘 심화반 타임어택 문제로 선택된 문제. 확실히 한 주 동안 풀어본 유형을 내주셔서 생각보다 빠르게 풀 수 있었다. 프로그래머스_다음 큰 숫자처음에는 재귀로 풀어야 할까? 생각하다가 좀 더 단순하게 생각했다. NumberOfOne이라는 함수를 만들어 1의 개수를 세었고, 이 함수에서 toString()과 match()는 모두 O(log n)의 시간 복잡도를 가진다. 따라서 solution 함수에서는 targetNumber의 초기값을 선언하고 while문의 조건문을 실행할 때 O(log n), while 루프를 돌 때 O(n)의 시간복잡도를 가짐으로 최종적으로 O(n)으로 계산하였다. 이것보다 비트 연산을 통해 더 빠르고, 시간 복잡도도 줄이는 방법이 있었는데 많이 난해하여 실제 적용하긴 어려울 듯하..
분류 전체보기
어느 정도 완성해서야 생각하지만, 아예 심화과제를 받았을 때부터라도 tailwind css로 리팩토링을 하고 진행했으면 어떨까 하는 아쉬움이 조금 남지만 이미 돌아가기에 너무 멀리 와버렸다. 이번 프로젝트는 styled-components로 마무리하고 다음 프로젝트 때부터 tailwind를 더 많이 써보기로! ※ 추가된 프로젝트 기능1. Header Nav 바 구현헤더는 글래스 모피즘으로 구성하였고, 홈으로 이동할 수 있는 로고, 마이페이지 이동 이미지, 로그인/로그아웃 버튼이 위치해 있다. 마이페이지 이미지는 로그인했을 때만 노출된다.2. jwt 인증 서버를 통한 로그인/회원가입 기능로그인을 하지 않으면 메인 페이지로 이동이 불가능하게 하였으며, 로그아웃 시에도 로그인 화면으로 되돌아온다.3. 마이 페..
기존에 진행한 프로젝트에 이어서 jwt 인증을 이용한 로그인/회원가입, json-server를 통해 Restful 하게 구현하기, Zustand 사용, Tanstack Query 이용하기 등 다양한 도전과제들이 추가된 이번 과제!처음 발제날 들을 땐 상당히 빡빡한 일정인 것 같았는데, 인증/인가 기능을 구현한 이후는 뭔가 9부 능선 넘은 것 처럼 수월하게 풀렸다. 다만, 익숙하지 않은 Tanstack Query를 사용하는데 반갑지 않은 오류를 만나고, 아직도 access Token을 header에 추가하여 보내는 과정은 뭔가 두리뭉실하게 알고 있는 느낌이다.하루를 꼬박 과제에 투자하니 어느정도 완성되었다! 트러블 슈팅도 크게 있지 않아 작업 과정은 내일 TIL에 모아서 올려야겠다..
지난 알고리즘 심화수업을 들은 이후 문제 풀이에만 집중하는 것 보다, 제한사항을 보고 시간복잡도를 먼저 생각한 뒤 알고리즘을 구현하려고 스스로 생각하고 있다. 해당 문제는 A와 B 배열을 가지고 (A최소값 x B최대값) + ... + (A 최대값 x B 최소값)이 될 수 있게 로직을 구현해야 함으로 최소 2번의 정렬과정을 거쳐야 한다. 그리고 계산된 값의 누적합을 구해야 함으로 reduce를 한 번 사용하였다. sort의 시간 복잡도는 nlog(n)이고, reduce는 log(n)이기에 최종적으로 코드의 시간 복잡도는 nlog(n)이 된다.
지난주 알고리즘 심화반 과제 중 하나였던 최댓값과 최솟값. Math.min()이 시간복잡도가 O(n^2)인 줄로 착각했어서 nlog(n)의 sort()로 풀었다... 튜터님의 설명과 함께 다시 한번 코드를 살펴볼 수 있어서 다행이었다. 평생 착각할 뻔또한 자바스크립트의 내장함수는 v8엔진 위에서 c++로 작동하기 때문에 일반적으로 자바스크립트에서 for문을 순회하는 등의 비슷한 작업과 비교하면 내장함수가 더 속도가 빠르다고 한다. 내장 함수에 어떤 로직이 쓰였나 생각해 본 적이 많지 않아 눈에 보이는 안전한 for문을 더 많이 애용했던 것 같은데 이 점도 신기했다.
프론트엔드 개발을 하다 보면 디자이너와의 협업은 필수인데, 지금도 팀 프로젝트를 하면서 조금씩 디자인을 할 일이 있기도 하고 깔끔하고 접근성 좋은 UI를 만들기 위해 종종 웹 디자인을 찾아보곤 한다. 가장 많이 참고하는 Madia Designer님 채널https://www.youtube.com/watch?v=X18sPNdD8yw&list=LL&index=6 평소 피그마 디자인을 할 때에는 여백과 간격만 신경 썼는데, 이번 기회로 그리드를 먼저 잡고 형식에 맞춰 디자인해보고 싶었다. 다만 마땅한 자료와 시간이 없어 점점 미루게 되었는데 이번 기회에 한 번 따라 연습해 보았다. 비록 포토샵 자료지만 기본기를 익히는데 문제없었고, 최근에 figma 끝장 강의 3시간짜리를... 올려주셔서 조금씩 나누어 보고 있..
드디어 약 일주일에 걸친 뉴스피드 프로젝트가 완성되었다. 짧은 시간이기에 원하는 기능을 전부 선보이진 못하였어도, 다 같이 노력하여 만족스러운 페이지가 나왔다. 보완점도 좀 있고 아쉬움도 남아야 프로젝트가 제대로 진행된 느낌이 든다. 날밤 새면서 정말 고생한 팀원들👍👏 👍 👏 그중 내가 맡았던 상세 페이지 및 글 작성 기능 구현 중 있었던 트러블 슈팅 혹은 새롭게 작업해 본 기능들을 정리해보려 한다. 1. 늘어나는 textarea 만들기보통 textarea는 지정된 height를 넘으면 스크롤이 생기는데, UI적으로 예쁘지 않고 한눈에 모든 글을 확인할 수 없다는 점 때문에 늘어나는 textarea를 만들어 보았다. textarea를 useRef를 통해 DOM 조작할 수 있게 설정한 뒤, han..