일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Javascript
- github
- 코테
- 컴퓨터공학
- 코딩테스트
- 그리디
- CSS
- cpu
- 국비지원취업
- 프론트엔드개발자
- 야놀자
- html/css/js
- 백준
- KAKAO
- DFS
- 알고리즘
- 자바스크립트
- js
- nodejs
- 국비지원
- BFS
- 부트캠프
- computerscience
- 너비우선탐색
- CS
- 패스트캠퍼스
- 컴퓨터과학
- LinkSnap
- git
- 호이스팅
- Today
- Total
목록Algorithm (30)
My Boundary As Much As I Experienced
https://school.programmers.co.kr/learn/courses/30/lessons/340213 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제 수준:레벨1. 문제 요약:동영상 재생기를 만들고 있다.- 가능한 유저입력은 2개이다. - 10초 후로 이동 - 10초 전으로 이동 커멘드- 영상이 시작되는 점과 영상이 끝나는 점을 넘길수는 없다. - 00:05초에서 10초 이전으로 해봤자 00:00초로만 이동한다. - 10:00분 짜리 영상에서 09:55에서 10초 뒤로 가봤자 10:00분으로만 이동한다.- 오프닝 구간이 존재하는데 이 구간에 들어가면 자동 스킵 설정이 되어 있..
https://www.acmicpc.net/problem/18111 문제 수준:실버2 문제 요약:lvalue는 세로 N, 가로 M 크기의 집터를 골랐다. 집터 맨 왼쪽 위의 좌표는 (0, 0)이다. 우리의 목적은 이 집터 내의 땅의 높이를 일정하게 바꾸는 것이다. 우리는 다음과 같은 두 종류의 작업을 할 수 있다.좌표 (i, j)의 가장 위에 있는 블록을 제거하여 인벤토리에 넣는다.인벤토리에서 블록 하나를 꺼내어 좌표 (i, j)의 가장 위에 있는 블록 위에 놓는다.1번 작업은 2초가 걸리며, 2번 작업은 1초가 걸린다. 밤에는 무서운 몬스터들이 나오기 때문에 최대한 빨리 땅 고르기 작업을 마쳐야 한다. ‘땅 고르기’ 작업에 걸리는 최소 시간과 그 경우 땅의 높이를 출력하시오. 문제 풀이 전략:이런 문..
예전 프로젝트에서 github action을 사용할 때 yaml 스크립트를 다룬 적이 있다. 배포 시 작동하며 환경 변수를 firebase hosting에 제공하는 용도로 YAML을 썼던 기억이 있는데.. 그땐 그냥 YAML이라는 생소한 포맷의 스크립트는 뭔가 파이썬 처럼 들여쓰기로 문법 구분하구나. 라고만 생각하고 넘어갔다. 그런데 node.js 파일 모듈을 다루면서 gray-matter라는 라이브러리를 사용하는데 yaml 파일에서 메타데이터를 뽑는 예제를 보고 한 번 정리해야겠다 싶어서 정리한다. YAML의 역사 YAML은 2001년에 Clark Evans, Ingy döt Net, 그리고 Oren Ben-Kiki에 의해 만들어졌다. 이들은 데이터를 직렬화하는 방법으로 XML의 복잡성을 단순화하고자 ..
https://school.programmers.co.kr/learn/courses/30/lessons/42577 오랜만에 프로그래머스로 복귀했다. 레벨2 남은거 다 풀고 레벨3 풀기 시작해야겠다. 문제 수준: 레벨2 문제 요약: 전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다. 구조대 : 119 박준영 : 97 674 223 지영석 : 11 9552 4421 전화번호부에 적힌 전화번호를 담은 배열 phone_book 이 solution 함수의 매개변수로 주어질 때, 어떤 번호가 다른 번호의 접두어인 경우가 있으면 false를 그렇지 않으면 true를 return 하도록 sol..
앞서, 트리구조란? 이전 포스팅에서 본대로 트리구조는 아래와 같이 자바스크립트로 심플하게 구현할 수 있다. 그러나 아래 구조에서는 한 Node에 3개 이상의 자식노드도 제한없이 추가할 수 있다. class Tree { constructor(value) { this.root = new Node(value); } } class Node { children = []; constructor(value) { this.value = value; } push(value) { this.children.push(new Node(value)); } } 그러므로 이진탐색에 쓰이기 위한 트리구조는 좀 더 제약이 필요한데, 실제 구현은 다음 포스팅 때 하겠다. 그전에 일단 이진트리가 무엇인지에 대해 정확히 알아보도록 하자. 이..
트리 구조란? 트리(Tree)는 계층적인 구조를 나타내는 비선형 자료 구조이다. 이 구조는 노드(node)와 간선(edge)의 집합으로 이루어져 있다. 트리에서 한 노드는 부모(parent)와 그 자식(child) 노드들로 구성된다. 트리 구조에서는 최상위 노드를 루트(root) 노드라고 하고, 각 노드는 그 아래에 여러 자식 노드들을 가질 수 있다. 각 노드는 부모 노드로부터 연결된 간선을 통해 접근할 수 있다. 트리에서 각 노드는 서로 다른 자식을 가질 수 있지만, 각 노드는 하나의 부모를 가진다. class Tree { constructor(value) { this.root = new Node(value); } } class Node { children = []; constructor(value) ..
https://www.acmicpc.net/problem/2740 문제 수준: 실버5 문제 요약: 행렬 A와 B가 주어졌을 때 행렬곱셈 값을 구하여라. 입출력 예 (입력 / 출력): 문제 풀이 전략: 행렬과 행렬의 곱셈을 어떻게 구하는지 몰라서 일단 아래 블로그와 영상을 참고했다. 수1에 나오는 내용이라고 한다. 지금 중등 수학 복습 중인데 조만간 따라잡아야겠다. 참고한 블로그: https://blog.naver.com/cindyvelyn/222136360080 참고한 영상: https://www.youtube.com/watch?v=JpSe38UHaos 일단 입력값이 조금 불친절하다. 행렬에 대한 메타데이터 형식이 실제데이터와 동일할 가능성이 있기 때문이다. 그래서 메타데이터의 문자열만 집어내서 이를 기..
https://www.acmicpc.net/problem/5179 문제 수준: 실버3 문제 요약: 문제 풀이 대회를 했는데, N명의 참가자가 M개의 문제를 풀게 됐다. 이때 점수가 존재하는데, 문제를 맞히면 '문제를 맞힌 시각 + (틀린 횟수 x 20)'을 점수로써 해당 참가자에게 주어진다. (*맞춘 다음 다시 푼다고 하면 첫 풀이만 인정된다. 중복 반영은 안 된다.) 순위를 정할 땐 푼 문제 수가 많은 순으로 등수가 높고, 푼 문제 수가 같은 경우엔 점수가 낮은 쪽이 높다 (그렇다면 점수가 아니라 패널티 아닌가..) 이 테스트기를 구현하시오. 입출력 예 (입력 / 출력): 문제 풀이 전략: 뭐랄까. 점수라는건 사실 패널티라고 봐야할거 같다. 틀릴수록 점수가 오른다는 것이 직관적으로 안 받아들여지고, 점..
Queue란? "Oh, I'll put this in my watch later queue!" 플레이리스트 큐, 입장 대기 큐 등.. 우리가 직관적으로 아는 그 큐 맞다. 선입선출, 들어온 대로 나가는 리스트인 queue이다. 자바스크립트에서 배열과 shift메소드를 Queue 대용으로 쓰면 안 좋은 이유 자바스크립트 배열을 shift 메소드를 쓰며 queue같이 쓰는 것도 가능하긴 하지만 대규모 데이터를 queue로 처리해야될 때 자바스크립트 배열은 좋은 선택지가 아니다. 왜냐하면 shift()메소드로 특정 인덱스 인자를 제거했을 때, 다음 인덱스에 있는 인자를 해당 빈 인덱스에 끌어오고, 또 다다음것을 다음으로 끌어오고... 이런 O(n)시간복잡도의 재배치가 발생하기 때문이다. 얼마 안 되는 데이터면..
연결 리스트란? 배열과 다르게 Node와 Node의 연결을 이용해서 리스트를 만드는 자료구조. 자바스크립트에 익숙한 사람은 원래 배열이라는 자료형에 갯수 제한 없이 원하는 만큼 다 집어넣을 수 있는 줄 아는데 (그것도 자료형에도 구애받지 않고 넣을 수 있는 줄 안다.. 자료형도 정해야 한다. 기본이 any[]가 아니다.) 원래 배열은 몇 개까지 수납할지 선언할 때 그 갯수를 한정해야 한다. 이러한 배열의 단점을 보안하기 위해 추가나 삭제가 자유로운 리스트를 만들고 싶은 니즈가 있었는데 이를 구현한게 연결 리스트이다. 기본 구조 기본적으로 HEAD와 TAIL 등의 순서가 존재한다. Node라는 유닛으로 구성되어 있고, Node는 실제 데이터 값와 다음 데이터의 참조를 가지고 있다. 아래는 삭제 시의 모습이..