분류 전체보기

· 알고리즘
줄 세우기 문제이다. 백준의 키순서와 비슷하다는 느낌이었지만 백준의 키순서 문제는 자신의 순서를 정확히 알 수 있는 사람의 수를 묻는 문제였고, 순서를 정렬(정확하지 않는 사람은 임의로)한다는 점에서 차이가 있었다. 이 차이에 의하여 키순서문제는 플로이드 와샬이나 dfs를 통해 푸는 문제가 되었고, 이 문제는 위상 정렬을 통해 푸는 문제가 되었다. 위상 정렬은 진입 차수가 낮은 노드들 순으로 정렬할 때 활용하는 알고리즘이며 일상생활에서도 우리가 흔히 쓰고 있는 알고리즘이다. 대표적으로 대학교의 수강커리큘럼을 볼 때 우리가 무의식적으로 많이 사용하고 있는데 어떤 한 과목을 듣기 위해서 선수과목이 있고, 그 과목의 또 선수과목이 있다. 우리는 이를 보기 쉽게 하기 위해 선수과목의 수준이 낮은 것부터 정렬하여..
· 개발
노마드 코더님의 CSS Layout 마스터클래스 Clone코딩을 진행하던 중에 호기심이 생겨서 찾아보았다. 다른 웹페이지를 클론 코딩하는 도중 header 부분을 클론 코딩하면서 문제가 생겼다. 나는 header를 포함한 모든 부분을 하나의 그리드로 구현하고 있었는데 header 스크롤바가 내려가도 항상 저 위치에 있어야 된다는 점을 늦게 확인했다. 처음에는 position : fixed를 해봤지만 아래와 같이 CSS가 엉켜버렸다. Nav바 부분을 gird에서 빼고 새로해야하나 고민하다가 방법을 찾아보았는데 position : sticky라는 방법을 알게 되었다. 결론부터 말하면 나의 문제를 해결할 수 있었다. header를 포함한 모든 사진들이 같은 Grid 안에 있지만, position : stick..
· 알고리즘
이 문제는 문제에서 어피 치과 과녁을 쏜 이후에 라이언이 과녁을 쏘는데 문제에 규칙에 따라서 라이언이 최대 점수차로 이기게 과녁을 쏠려면 어떻게 점수를 얻어야 할지 구하는 문제이다. 이 문제를 보면서 어떻게 구현할지 고민을 했는데 나에게 힌트가 됐던 점은 점수가 1에서 10까지 있다는 것과 오직 점수 얻는 방식이 상대편(어피치) 보다 많이 그 점수를 맞췄을 때 딱 그 점수만 얻는다는 점이다. 예를 들면 어피치가 10점 3발, 라이언이 10점 4발을 맞춘다면 점수는 라이언만 10점을 얻게된다는 점이다. 즉, 10개의 점수판 중에서 1점을 획득한다/ 못한다, 2점을 획득한다 / 못한다 이런 식으로 경우의 수가 2의 10 제곱으로 완전 탐색을 할 수 있다는 점이 나에게 힌트였다. 나는 위의 아이디어를 바탕으로..
· 알고리즘
이 문제는 한 마을에서 다른 마을로 이동할 때 비용(시간)이 주어질 때 다른 마을까지의 비용이 주어진 K보다 작은 마을의 개수를 구하는 문제이다. 가장 먼저 다익스트라가 떠올랐고 실제로 다익스트라 알고리즘을 통해 문제를 풀었다. 한가지 특이점은 보통 다익스트라는 목적지까지의 최소비용을 구할 때 많이 사용해온 알고리즘이지만 이 문제는 특별한 목적지가 존재하지 않다. 그렇기 때문에 나는 이 문제에서 heap 자료구조를 사용하지 않았다. 최소비용으로 갈 수 있는 경우에만 enqueue를 하면서 그래프 탐색을 하다가 더 이상 최소비용으로 갈 수 있는 도시가 없을 때 종료하도록 코드를 만들었다. (지금 생각해보니 heap을 사용하여 현재까지 비용이 K가 넘어가면 중지하는 식으로 구현해도 될 것 같다.) 정리하자면..
· 알고리즘
이 문제를 요약하자면 출발점에서 목적지까지 최단거리를 제외한 그다음 최단거리를 이용한다면 소요되는 비용을 묻는 문제이다. 이 문제를 풀기위한 나의 아이디어는 다익스트라로 우선 최단거리를 구한 후 그 결과를 활용하여 최단거리를 추적하고, 그 최단거리를 삭제한 후에 다시 다익스트라를 이용하여 최단거리를 구하는 것이다. 이를 정리하자면 아래와 같다. 1. 다익스트라를 통해 최단거리를 갈 때 비용을 기록 2. BFS를 활용해서 최단 루트 추적 -> 다익스트라를 기록한 배열을 활용하여 추적함 3. 다익스트라를 다시 하여 최소 비용 구하기 문제를 풀면서 생각한 엣지케이스는 최단거리가 여러 개일 수도 있다는 점이었기 때문에 최단거리를 추적할 때 이를 고려하여 최단 루트를 추적하였다. 이를 코드로 나타내면 아래와같다...
· 알고리즘
이 문제를 보면서 어떻게 풀어야 할지 고민하다가 알고리즘 분류를 보고 더 많이 헷갈렸다. 원래 문제를 풀 때 알고리즘 분류를 잘 보지 않으려고 하는데 이문제는 접근 자체가 너무 고민되어 보고 말았다.... 알고리즘 분류에 플로이드-와샬이 적혀있었는데 나는 기본적으로 플로이드-와샬 알고리즘도 다익스트라처럼 가중치가 있는 그래프의 최단경로가 있을 때 사용할 거라 생각했었는데 이 문제는 가중치가 없어서 어떻게 플로이드 와샬로 풀지 와닿지 않았다. 그래도 일단 플로이드-와샬 알고리즘의 기본 틀은 알고 있었기 때문에 그 틀에 맞추어 풀어보았다. 나의 아이디어는 아래와같다. 1. 2차원 배열에는 현재 행을 기준으로 열이 행보다 작으면 True (1)을 준다. 2. 플로이드-와샬알고리즘을 활용하여 비교대상 값(s)이..
· 개발
React App을 설치 한 후 실행을 하자마자 예외가 발생하였다. React 실행을 잘 됐지만 뭔가 찝찝한 이 에러를 확인 해보기 위해서 온 구글을 뒤져보았다. 대표적인 해결책들로는 아래와 같이 있었다. Node.js 버전 불일치 -> 재설치 npm swr 설치 node_modules 삭제 후 재설치 모두 해봤는데 안돼서 포기할려던 찰나 코딩애플이라는 강의사이트의 나와 똑같은 사람의 문의를 통해 해결할 수 있었다. 나의 문제는 파일 경로의 #이 있었던 것이였다. 다른 폴더에 설치하니 놀랍게도 실행 될 수 있었다. 왜 #이 붙어서 오류가 나는지는 모르겠지만 그냥 작업폴더에는 특수문자를 안써야겠다고 절실히 느꼈다.
· CS
promise를 통한 동기 호출을 공부하다가 array.reduce의 몰랐던 활용법을 알게 되어 정리해보았다. 일단 reduce의 기본 형태는 아래와 같다. arr.reduce(callback[,initialValue]) Callback acc : 콜백의 반환값을 누적할 공간 val : 처리할 현재 값 index : 현재의 인덱스 (선택) array : reduce()를 호출할 배열(선택) InitiailValue (선택) callback의 최초 호출에서 첫 번째 인수에 제공하는 값. 지정하지 않는다면 배열의 첫 번째 요소가 저장됨 설명만 봤을때는 처음 떠오르는 생각은 누적합이었고, 실제로 reduce예제를 찾아보면 누적합이 가장 많이 보인다. 나 역시 reduce를 배울 때 누적합 할 때 가장 많이 사..
거념
'분류 전체보기' 카테고리의 글 목록 (5 Page)