전체 글

전체 글

    [JS][프로그래머스]야근 지수

    문제 번호 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 알고리즘 분류 우선 순위 큐 문제 풀이 우선순위 큐를 활용하면 문제를 해결 할 수 있다. 문제에서 주어진 works를 살펴보면 works중 가장 큰 수가 가장 작아질 때가 정답이다. 따라서 MaxHeap을 사용해서 works에 남아있는 수 들 중에서 가장 큰 수를 1씩 줄여나가면 된다. MaxHeap class Node{ constructor(value) { this.value = value; } } class MaxHeap{ constructor(compare){ this.heap = []; th..

    [TIL]Day8

    배운 내용 HTML Hyper Test MarkUp Language. 로직이 실행되지 않기때문에 프로그래밍 언어는 아니다. 구조(Structure)와 의미(Semantic)로만 남아있다. CSS Cascading Style Sheets 마크업 언어가 실제 표시된는 방법을 기술하는 스타일 언어다. ID와 Class 이름을 불러오는 방식의 차이가 있다. 클래스명은 앞에 마침표(.)를 찍는다. 아이디는 앞에 샵(#)을 사용한다. 클래스는 중복 사용이 가능하지만 아이디는 한 페이지에서 딱 한번 사용해야한다. 중복 ID가 여러 개 존재할 경우 정상적으로 작동하지 않는다. 한 요소에 여러개의 클래스명이 적용될 수 있다. 그러나 아이디는 하나만 적용이 가능하다. 여러개의 id를 적용할 경우 정상적으로 작동하지 않는다..

    [TIL]Day7

    배운 내용 백트래킹 모든 경우의 수를 탐색한다. 적절한 조건을 사용하여 가지치기(Pruning)해야한다. 자바스크립트는 재귀 효율이 나쁘기 때문에 DFS를 구현할 경우 스택을 이용하자. 동적계획법 큰 문제를 작은 문제들로 나누어서 해결한다. 특정한 알고리즘이 아니라 문제 해결 방식을 의미한다. 메모이제이션/타뷸레이션 메모이 제이션 : 하양식 접근법으로 결과물을 메모리에 저장해 필요할때 꺼내 쓴다. 타뷸레이션:상향식 접근법으로 미리 다 계산해두고 꺼내쓴다. 문제를 작은 문제들로 나누거나 일정한 패턴이 보인다면 동적계획법을 생각해보자. 보충 해야할 내용들 백트래킹, DP 모두 개념자체는 어렵지 않으나 실제로 문제에 적용하기에 어렵다. 특히나 DP의 경우 유형도 난이도도 제가각 이기때문에 많은 시간이 요구된다..

    [JS][프로그래머스]N-Queen

    문제 번호 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 알고리즘 분류 백트래킹 문제 풀이 2차원 배열을 생성해서 퀸을 놓으면서 해당 퀸이 지나가는 경로를 체크해서 다음 퀸이 해당 경로에 올 수 없도록 하려고 했다. 그러나 2차원 배열을 그때그때 지워가면서 확인하려 했으나 그렇게 되면 시간 초과에 걸리게 된다. 그래서 i번째 퀸을 놓을 수 있는지 다른 방법을 이용해서 확인해야 한다. 여기서 힌트를 읽어봤다. 1차원 배열을 사용하면 시간을 줄여서 확인할 수 있다. 예를 들어 'vailed [i] = 3'이라면 i행 3열에 퀸이 놓여있다는 뜻이다. 이를 활용..

    [TIL]Day6

    배운 내용 BFS / DFS 그리디 For ..in / For ..of / forEach의 특징과 차이점에 대해서 알아봤다. [실습] 여행경로 풀이를 정리하려고 했는데 다른 코드를 붙여넣기 하고 구경하다가 원래의 내 코드가 사라졌다...(ㅠ..) sort함수는 [[a,b], [b,c], [c,d]] 와 같은 2차원 배열에도 별다른 설정없이 사용할 수 있다. 다음과 같이 그래프를 생성할 수 있다. const graph = {} for (const [src, dest] of tickets) { if (graph[src] === undefined) { graph[src] = []; } graph[src].push(dest); } 보충 해야할 내용들 DFS의 경우 stack을 사용하는데 stack은 top에서부..

    [TIL]Day5

    배운 내용 Tree 이론과 구현. 전위, 중위, 후위 순회를 구현해본다. Heap 이론과 구현. Trie 이론과 구현. 트라이는 문자열을 저장하고 효율적으로 탐색하기 위한 트리 형태의 자료구조이다. 트리의 루트에서부터 자식들을 따라가면서 생성된 문자열들이 트라이 자료구조에 저장되어있다. 빠르게 탐색이 가능하지만 각 노드에서 저장하고 있는 정보가 많을 수 있기때문에 저장 공간의 크기가 크다는 단점이 존재한다. 검색어 자동완성, 사전에서 찾기 그리고 문자열 검사와 같은 곳에 사용할 수 있다. Sorting 이론과 구현. 보충 해야할 내용들 트라이에 대해서 더 알아보자. 트라이를 구현할때 각 노드의 자식들에 접근할 수 있는 여러가지 방법을 생각해보자. 자동완성을 구현할때 예외로 처리해야할 상황에 대해서 생가해..

    [TIL]Day4

    배운 내용 Git과 GitHub에 관하여. Queue Hash Table & Hash Collision 선형 탐사법 제곱 탐사법 이중 해싱 분리 연결법 그래프 보충 해야할 내용들 아직 Git과 GitHub에 대해서 제대로 숙지하지 못하였다. 연습해 볼 수 있는 사이트를 찾았고, 연습을 좀 더 해본뒤에 Git과 관련된 내용을 따로 정리해야겠다.

    [JS][백준]14891_톱니바퀴

    문제 번호 14891번: 톱니바퀴 첫째 줄에 1번 톱니바퀴의 상태, 둘째 줄에 2번 톱니바퀴의 상태, 셋째 줄에 3번 톱니바퀴의 상태, 넷째 줄에 4번 톱니바퀴의 상태가 주어진다. 상태는 8개의 정수로 이루어져 있고, 12시방향부터 www.acmicpc.net 알고리즘 분류 구현 시뮬레이션 문제 풀이 구현 문제이다. 한 가지 어려웠던 점은 한개의 톱니바퀴가 돌아가면 다른 톱니바퀴에도 영향을 끼치게되는데 이 과정들이 동시에 일어난다는 것이다. 예를들어 1번 톱니바퀴를 돌리면 오른쪽 끝에있는 4번 톱니바퀴도 돌아갈 수 있는데, 1-2-3-4번 차례로 돌리는 것이 아니라 1-2-3-4번 톱니바퀴가 '동시에' 돌아가야 한다. 우선 돌리긴 돌려야하니 시계방향, 반 시계 방향으로 톱니를 돌리는 알고리즘을 작성했다...