분류 전체보기

    [JS][백준]1520_내리막 길

    문제 번호 1520번: 내리막 길 여행을 떠난 세준이는 지도를 하나 구하였다. 이 지도는 아래 그림과 같이 직사각형 모양이며 여러 칸으로 나뉘어져 있다. 한 칸은 한 지점을 나타내는데 각 칸에는 그 지점의 높이가 쓰여 있으 www.acmicpc.net 알고리즘 분류 다이나믹 프로그래밍 그래프 이론 그래프 탐색 깊이 우선 탐색 문제 풀이 DFS와 DP를 사용해야하는 문제이다. 처음에는 DFS를 돌면서 도착점에 도착했을 때 카운트를 해주고 해당 카운터를 반환했는데 이럴경우 시간 초과에 걸리게 된다. 그래서 중복되는 과정을 줄일 수 있도록 이전 값들을 활용해야 겠다고 생각했다. 여기서 고민을 했던 점은 같은 (x,y) 좌표에 도착하더라도 걸리는 '칸 수'는 다를 수 있다는 점이었다. 우선 시작점에서 DFS를 ..

    KAKAO MAP

    KAKAO MAP API를 사용했다. 지도에 custom overlay를 올려서 정보를 표기하고 싶었다. 처음 생각은 표시할 정보들을 담을 배열을 forEach 문으로 순회해서 overlay를 만들고 각각의 overlay에 click 이벤트를 달면 되겠다! 싶었다. airQualityByCity.forEach( ({ cityName, fineDustScale, ultraFineDustScale, fineDustGrade, ultraFineDustGrade, }) => { geocoder.addressSearch(cityName, (result, status) => { if (status === kakao.maps.services.Status.OK) { const latitude = Number(resul..

    useState, KAKAO MAP

    useState를 사용하면서 이전 값을 보장받을 수 있는 방법이 있다. useState의 snap shot을 이용 하는 방법이다. const [number, setNumber] = useState(0) { setNumber(number + 1); setNumber(number + 1); setNumber(number + 1); }}>+3 이렇게 사용한다면 기대했던 3이 나오지 않는다. 3번의 setNumber가 모두 0에 1을 더하는 방식으로 동작하기 때문이다. batch: 일괄 처리 떄문이다. 그렇기 때문에 코드에 명시적으로 이전 값을 사용하도록 하여야 원하는대로 동작할 것이다. { setNumber(n => n + 1); setNumber(n => n + 1); setNumber(n => n + 1)..

    [JS][백준]16198_에너지 모으기

    문제 번호 16198번: 에너지 모으기 N개의 에너지 구슬이 일렬로 놓여져 있고, 에너지 구슬을 이용해서 에너지를 모으려고 한다. i번째 에너지 구슬의 무게는 Wi이고, 에너지를 모으는 방법은 다음과 같으며, 반복해서 사용할 수 있 www.acmicpc.net 알고리즘 분류 브루트포스 알고리즘 백트래킹 문제 풀이 처음엔 앞뒤의 곱이 가장 큰 숫자를 먼저 빼고, 만약 곱이 같다면 작은 숫자를 빼는 형식으로 생각했다. 그러나 이 경우 예외가 존재한다. 5 3 1 2 4 5 그래서 input 조건을 다시 살펴봤다. 맨앞, 맨뒤는 못 뽑으니까 완전탐색으로 진행해도 될거같다.라고 생각해서 백트래킹으로 풀면 되겠다 싶었다. 최대한 for문을 안쓰려고 했는데 백트래킹으로 바꾸면서 for문을 넣어버렸다. for문 대신..

    [회고]FE프로젝트 최종 회고

    회고 방법 이번에는 4L 방식으로 회고를 해봤다. 노션에 먼저 작성을 했었고 그 내용을 그대로 가져왔기 때문에 다소 딱딱해 보일 수 있지만 기록을 남겨둔다는 것에 의의를 두고싶다. 4L 회고를 진행하기 전에 간단하게 서론을 써본다. 첫 팀 프로젝트였고 굉장히 재밌게 했다. https://unsunghero.netlify.app/ Unsung Hero unsunghero.netlify.app 아쉽게도 6월 쯤에 백엔드 서버가 닫힐 예정이라 이후엔 동작하는 모습을 볼 순 없을 것 같다. 처음 써보는 기술스택도 많이 써봤다. 사실 더 써보고 싶은 기술들이 많았는데 현실적으로 프로젝트 기간안에 다 소화할 수 없을 것 같다고 판단해서 사용하지 않은 기술들도 있다. 여러가지 문제도 많았다. 사진이 매~우 느리게 등..

    [회고]2.5달 되돌아보기

    지난 2.5달 전체를 되돌아보기보다는 최근에 느낀 생각을 정리했다. 선요약: 1. 모든 코드를 따라 칠 필요없다. 다만 어떤 내용이 있었는지는 알아야 한다. 그리고 나중에 찾아보고 싶을 때 바로 찾을 수 있을 정도(어느 강의였는지, 어떤 키워드를 검색해야 하는지)는 기억해야 한다. 2. 디테일한 코드를 이해하는게 어렵다면 로직, 흐름은 이해해야 한다. 3. 강의를 듣고 나서 구현을 '직접' + '많이' 해봐서 체득하는 게 답이다. 지금까지는 JS나 CSS 등 (vue는 제외) 그래도 '한 번쯤은' 들어보고 사용해본 내용들에 관해서 수업을 들었다. 그러나 현재 상황은 매일 새로운 내용을 배우고 있고 기본적인 내용(내 기준)을 벗어나서 다양한 라이브러리 사용법, 컴포넌트 | custom hooks 만드는 방..

    [JS]스레드, 프로세스

    프로세스란? 컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램. 실행된(중인) 프로그램을 의미한다. 프로그램 자체는 생명이 없지만 실행되어 메로리에 적재 되면 생명이 있는 프로세스가 된다. CPU가 매~우 빠르게 실행할 프로세스를 교체하기 때문에 여러가지 프로세스를 동시에 실행하는 것 '처럼' 느낄 수 있다. 멀티 프로세스는 하나의 프로그램을 여러 개의 프로세스로 구성하는 것이다. 크롬은 멀티 프로세스다! 스레드란? 프로세스 내에서 실행되는 여러 흐름의 단위 => 프로세스가 할당받은 자원을 이용하는 실행단위다. 스레드는 프로세스 내에서 각각 Stack만 따로 할당 받고 Code, Data, Heap영역은 공유한다. 한 스레드가 프로세스 자원을 변경하면, 다른 이웃 스레드(sibling thread)도 ..

    [JS][프로그래머스]1차_캐시

    문제 번호 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 알고리즘 분류 문제 풀이 LRU가 무엇인지 알아야하는 문제다. 정확하게 알 필요는 없고 가장 오랫동안 사용되지 않은 페이지를 교체한다라는 것만 알면 된다. 그리고 검색한 도시가 캐시되어 있다면 해당 도시가 최근에 검색 되었다고 업데이트 해야한다. 예를들어 [A,B,C] 라는 순서대로 검색을 진행 했었으면, A가 가장 오랫동안 사용되지 않은 페이지에 해당된다. 이때 다음 번에 A를 검색했으면 [B,C,A]로 상태를 업데이트 해주어야 한다. cache된 데이터를 담아주는 자료구조로 배열을 선택했기 때문..