전체 글 42

[TIL] 프로그래머스 프론트엔드 데브코스 DAY10 TIL

공부한 내용 📖 이선협 강사님 특강 알고리즘/코딩테스트 팁 기술, 사고, CS의 연관관계 JS vs Python 알고리즘/코테 팁 DFS,BFS,힙,이진탐색 등... -> 어느정도 외우고 익혀야 하는 부분이 있다 입력값의 범위를 통해 시간복잡도를 판단하고, 어떤 유형인지 판단하는 연습을 하자 초반은 쉬운, 후반은 어려운 경향이 있으니 후반부는 DP같은 어려운 부분을 염두에 두자 코드 작성하며 생각하는게 좋은 사람도 있고, 끄적이다가 한번에 코드작성하는 사람도 있다. 본인을 알아야 한다. (나는 후자) 기술, 사고, CS의 연관관계 사고력이 뛰어나도 기술이 없으면 구현이 안되고, 기술이 좋아도 사고가 안되면 어렵게 풀어나가게 된다. CS기반 지식이 있어야 문제를 해결하는 사고를 할 수 있다. JS vs P..

부트캠프/회고 2023.10.03

[JavaScript] N-Queen 문제 (백준9663, 프로그래머스)

백트래킹에서 매우 유명한 N-Queen문제를 풀었다. 몇 달 전에 머리 싸매면서 DFS, BFS이론을 공부한 뒤에 백준에서 골드4 N-Queen을 바로 접했을 때 벽을 엄청 느꼈었는데, 최근에 알고리즘을 고민하며 푸는 맛에 좀 재미가 들렀고, N-Queen문제를 프로그래머스에서 다시 접하게 되어 각잡고 풀어보았는데 풀려서 접근 과정과 코드를 기록하려고 한다. N-Queen 프로그래머스 링크 N-Queen 백준 링크 접근) 이미 실패했던 경험을 통해 유명한 DFS 백트래킹 문제임을 이미 알고있긴 했으니 DFS 백트래킹을 어떻게든 사용하여 구현하는데에 초점을 두었다 (솔직히 문제를 보자마자 아~ 백트래킹이구나~ 알아챌 자신은 없다.) 재귀의 형태던 while(stack.length>0)의 형태던 반복을 돌아..

알고리즘 2023.10.02

[WIL] 프로그래머스 프론트엔드 데브코스 1,2주차 WIL

9.19 화요일 에 시작한 데브코스가 9.28 목요일 부터 시작된 추석 연휴를 지나 10.2 월요일이 되며 3주차를 맞이하였다. 날짜로는 3주차이지만, 1주차 화수목금, 2주차 월화수 해서 7일을 진행하였기에 1,2주차의 WIL을 한꺼번에 작성하게 되었다. 2주간 배운 내용 📖 7일이면서 2주동안 나는 무엇을 하였을까? 우선 1주차에는 가볍게 시작하는 듯 하면서도 스코프와 클로저 같은 개념을 학습하고, 알고리즘 입문인 자료구조까지 맛보았다. 이 과정에서 연결리스트를 실제로 구현해보기도 하였다. 또한 깃을 오랜만에 다시 실습하며 브랜치와 PR도 관리해보았다. 2주차에는 슬슬 프로그래머스 Lv3. 문제가 나왔다. 해시를 활용한 베스트 앨범 문제도 Lv3이었고, BFS, DFS문제와 이진탐색문제 모두 Lv3이..

부트캠프/회고 2023.10.02

[TIL] 프로그래머스 프론트엔드 데브코스 DAY6 TIL

공부한 내용 📖 프로그래머스 Lv3. 가장 먼 노드 문제 -> BFS를 활용한 그래프 문제 트리 자료구조 강의 재귀를 활용한 전위, 중위, 후위 탐색 함수 작성 실습. 전위:NLR순 탐색 중위:LNR순 탐색 후위:LRN순 탐색 이진탐색, 힙, 트라이 강의 -> MinHeap구현해보기 정렬 강의 -> 프로그래머스 Lv2. 가장 큰 수 JS에서 sort함수 사용시 유니코드순으로 정렬되므로 (1,10,2,3)순으로 배열된다. sort(a,b)=>b-a로 내림차순 배열 구현하자. DeepDive 배열 배열은 length프로퍼티를 갖는 객체라고도 볼 수 있다. Array 생성자 함수를 통해 배열을 생성한다. const arr = new Array(10); Array.from을 이용해 유사배열객체, 이터러블객체를 ..

부트캠프/회고 2023.09.27

[TIL] 프로그래머스 프론트엔드 데브코스 DAY5 TIL

공부한 내용 📖 큐 - 프린터 문제풀이 자바스크립트에서 큐를 구현하는법 구현한 큐에서는 push, pop 말고 enqueue, dequeue를 활용할 것을 명심하자(파이썬 코드를 js로 옮기는데 1시간 걸림) 해시테이블 - 베스트앨범 문제풀이 JS의 고차함수를 잘 활용하면 구현 문제를 생각의 흐름을 따라 작성할 수 있다. 처음으로 Lv3문제를 해결한 날이다. 궁금한 내용/부족한 내용🤔 JS의 배열과 객체 내장함수를 다루는 실력이 너무 부족하다. VanillaJS로 개발을 시작하게 되면 더 쓸일이 많을텐데 배열 slice, splice 나 Object.keys.sort 이런 내장함수를 딥다이브 스터디를 통해 더 공부해야겠다. 느낀점✍ 지금까진 JS로 자료구제 문제를 실습하며 '이거 그냥 파이썬으로 풀고 넘..

부트캠프/회고 2023.09.26

[TIL] 프로그래머스 프론트엔드 데브코스 DAY4 TIL

공부한 내용 📖 DAY4 강의 자료구조와 알고리즘이 중요한 이유 - 자료구조는 도구(재료), 알고리즘은 레시피, 개발자는 요리사! 스택 괄호문제(가장 깔끔했던 풀이) 단방향 연결리스트, 양방향 연결리스트, Circular연결리스트 구현. 깃 특강 git에서 branch를 변경할 때 그동안 git checkout으로 변경해왔었는데, 이젠 git switch를 쓰는게 더 좋다 git switch는 지금까지 작업한 내용이 stash 된다. 깃에서 스테이징이라는 개념은 데스노트같은 개념이다..(ㅋㅋ) 궁금한 내용/부족한 내용🤔 소스트리를 활용한 시각적 활용을 실습해봐야겠고다. 브랜치 개념에서 origin과 main을 경험적으로 이해하고 있지만 100프로 이해하고 있는 것 같지 않다.클린코드 특강도 한번 들어보자..

부트캠프/회고 2023.09.25

브라우저 렌더링 과정 (google.com을 입력하면?)

면접 질문 중 기본으로 여겨지며 가장 많이 물어본다고 하는 '크롬에 google.com을 입력하면 어떤 일이 발생하나요?' 에 대해서 정리해보려고 한다. 몇번이고 공부하고 외워봐도 며칠이면 기억에서 사라지는 경험을 겪다보니 정리하게 되었다. 네트워크, 브라우저 렌더링 과정을 모두 자세히 설명하자면 말도 안되게 길어지니까 최소치만 써보았다. 특히 브라우저 렌더링 과정을 자세히 다룬 글은 이 포스팅을 참고하면 된다. (네트워크는 알아서 책으로 공부..!) 브라우저에 URL을 입력하면 무슨 일이 발생할까? 1. 브라우저는 URL을 해석한다. 2. 해석한 URL을 토대로 브라우저 캐시에 해당 url이 있는지 확인한다 (여기부턴 있으면 바로 IP를 반환) 3. 없다면 로컬의 hosts파일을 참조해본다. 4. 여기..

CS 2023.09.22

[TIL] 프로그래머스 프론트엔드 데브코스 DAY3 TIL

오늘 공부한 내용 📖 1. 브라우저 렌더링 원리 (www.naver.com을 입력 시 일어나는 일) 2. 컴퓨터 시간 원리 3. 이벤트 루프 4. 유니코드와 정규표현식 5. 쿠키, 세션, 웹스토리지 6. 깃 포크 후 브랜치 생성, 작업 후 PR 어려웠던 내용😵 깃 오리진 레포 최신화 pull후 내 레포에서 작업하고 push 후 PR 생성하고 받는 것. 정규표현식이 기억이 안났다... 궁금한 내용/부족한 내용🤔 함수형 프로그래밍, 객체지향과 프로토타입, 모듈 개념이 추상적이라 잘 와닿지 않는다. 브라우저 렌더링 원리 술술 말하려면 좀 더 노력이 필요해보임 느낀점✍ 깃은 버전관리를 수월하게 하기 위하여 사용한다고 하는데 아직 사용에 있어서 많이 미숙하다. 오리진 레포를 작업하기 위한 사전작업으로 1. 포크를..

부트캠프/회고 2023.09.22

[TIL] 프로그래머스 프론트엔드 데브코스 DAY2 TIL

오늘 공부한 내용 📖 팀 노션을 꾸미기 위한 노션 활용법 1. 변수,상수,자료형 그리고 메모리 2. 표현식과 연산자, 제어문, 3. 배열과 객체 4. 스코프와 클로저 어려웠던 내용😵 클로저가 와닿지 않아 고생했다 + JS 함수의 호출과 참조, 실행의 문법적인 부분 따로 블로그에 정리해두었다. 궁금한 내용/부족한 내용🤔 1.함수에 내부함수를 작성하고 2.함수의 리턴값이 내부함수인데 3.리턴값을 객체로 반환할 경우 4.실행할 때의 문법이 어떻게 작성되는지 의 흐름이 너무 당연하게 여겨지는 부분이라 체화를 하긴 했는데 정확히 어떤 원리로 코드가 구성되는 것인지는 아직 모르겠다. 느낀점✍ 생각보다 노션을 잘 작성하는 것이 중요하고, 아직 경험이 없어서 많이 부족하다는 점.,... 이런거 잘 못하는데 그러니까 더..

부트캠프/회고 2023.09.21

[JavaScript] 실용적으로 공부하는 클로저(Closure)

클로저가 잘 이해가 되지 않는 와중에 (특히나 이해가 안되기보단 와닿지 않았다) 어떤 의의를 가진 것인지 잘 나타내는 영상이 있어서 참고하였다. 영상 let cnt = 0; function cntPlus() { cnt = cnt + 1; } console.log(cnt); //0출력 cntPlus(); console.log(cnt); //1출력 cnt를 선언하고 cntPlus라는 함수를 작성했다. 그런데 코드를 이렇게 작성하고 작업하다보면 의도치 않게 다음과 같은 상황이 발생할 수 있다. let cnt = 0; function cntPlus() { cnt = cnt + 1; } console.log(cnt); cntPlus(); console.log(cnt); //수많은 코드들로 작업함 cnt = 100..

JS 2023.09.21