저 많은 사람 중에 '나'

    [백준/JS] 10775 공항

    문제 접근 문제링크: https://www.acmicpc.net/problem/10775 10775번: 공항 예제 1 : [2][?][?][1] 형태로 도킹시킬 수 있다. 3번째 비행기는 도킹시킬 수 없다. 예제 2 : [1][2][3][?] 형태로 도킹 시킬 수 있고, 4번째 비행기는 절대 도킹 시킬 수 없어서 이후 추가적인 도킹은 불 www.acmicpc.net 유니온 파인드 문제이다. 알고 풀었는데도 못풀었다. 문제에 그리디가 섞여있는데 그리디 적인 발상을 하지 못했다. 비행기를 해당되는 게이트에 우선적으로 넣고 그 게이트가 차있다면 -1 인 게이트에 넣는다. 라는 그리디적인 발상말이다. 엌엌 🥹 문제 풀이 1. Find 한 비행기의 Root 가 0 이면 break 아니라면 2번을 수행한다. 2. ..

    [백준/JS] 4195 친구 네트워크

    문제링크: https://www.acmicpc.net/problem/4195 4195번: 친구 네트워크 첫째 줄에 테스트 케이스의 개수가 주어진다. 각 테스트 케이스의 첫째 줄에는 친구 관계의 수 F가 주어지며, 이 값은 100,000을 넘지 않는다. 다음 F개의 줄에는 친구 관계가 생긴 순서대로 주어진 www.acmicpc.net 유니온 파인드 문제이다. 문제 종류를 알고 풀었는데도 쉽지 않아 해설을 보았다. 1. parent 배열과 relation 배열을 선언한다. 1-1. parent 배열은 기존의 유니온 파인드 방식처럼, 배열[index] = index 로 초기화한다. 1-2. relation 배열은 유니온 될때 서로의 친구관계의 수를 합하기 위해 선언된다. 모두 1로 초기화한다. 1-3. 배열의..

    [백준/JS] 런타임 에러 (EACCES)

    문제 상황 백준 1717번 문제를 풀고 있었다. 로직을 다 짜고 제출했는데 런타임 에러를 만나게 되었다. 문제 원인 입력에 관한 오류였다. fs 모듈을 사용하고 있는데, JS 같은 경우 간간히 fs 모듈로는 입력을 다 받을 수 없는 경우가 존재하는 것 같다. const fs = require("fs"); BOJkey = false; const input = fs .readFileSync(BOJkey ? "./ehddud1006/BOJ/1717/input.txt" : "./dev/stdin") .toString() .trim() .split("\n") .map((item) => item.split(" ").map(Number)) .reverse(); 해결 방법 JS 로 백준 문제를 풀때 사용할 수 있는 입..

    [바킹독 강의] 플로이드 와샬

    https://blog.encrypted.gg/1035 [실전 알고리즘] 0x1C강 - 플로이드 알고리즘 안녕하세요, 이번에는 플로이드 알고리즘을 다루겠습니다. 이제 최단경로 알고리즘인 플로이드, 다익스트라 알고리즘만 다루고 나면 나름 길었던 그래프 파트가 끝납니다. 목차는 눈으로 한 번 blog.encrypted.gg 위 강의자료를 보며 생각해본점들을 기록합니다. 위 코드를 자바스크립트 코드로 바꾸면 아래와 같다. const fs = require("fs"); BOJkey = false; const input = fs .readFileSync(BOJkey ? "./ehddud1006/BOJ/11404/input.txt" : "./dev/stdin") .toString() .trim() .split("\..

    나의 깃 브랜치 전략

    카카오 테크 캠프의 실시간 세션에서 Git 에 대한 강의를 듣게 되었습니다. 집중력이 안좋아서 그런지 자꾸 딴생각이 들던 중, 나는 프로젝트를 진행할때 어떤 브랜치 전략을 사용하고 있었지? 타인에게 설명할 수 없다는 것을 깨달았습니다. 이러한 부족함을 안고서 나는 어떤 브랜치 전략을 사용하는지 설명할 수 있어야 겠다 라는 생각이 들어 이 글을 씁니다. 내가 생각하고 있는 전략 1. main 은 배포되는 브랜치이며, 개발은 dev 브랜치에서 이루어진다. 2. dev 브랜치를 기준으로 각자가 맡은 이슈를 feat 브랜치에서 개발한다. 3. 개발이 완료되면 feat 브랜치에서 QA 를 진행한다. 4. 안정성이 검증되면 dev 로 pull request 를 보낸다. 5. 코드 리뷰 후 dev 에 merge한다...

    [바킹독 강의] 다익스트라

    https://blog.encrypted.gg/1037 [실전 알고리즘] 0x1D강 - 다익스트라 알고리즘 네 반갑습니다. 이번에는 다익스트라 알고리즘을 해보겠습니다. 플로이드 알고리즘이랑 비슷하게 구현과 경로 복원 방법 모두 BOJ에 있는 문제를 가지고 직접 풀어볼거라 별도로 연습 문제 챕터 blog.encrypted.gg 위 강의자료를 공부하면서 한번 더 생각해본 점들을 기록합니다. 왜 O(VE) 일까? 강의 자료 1 ~ 13 페이지 설명을 구현한 로직은 O(VE) 를 가진다고 설명해주셨습니다. 왜 O(VE)일까를 한번 생각해봤습니다. 해당 로직에서는 다음 정점을 찾기위해서 fix 된 정점(노란색 표시된)에서 간선을 탐색하여 4번 5번 정점으로 이동할 수 있습니다. 따라서 정점의 모든 간선을 탐색하기..

    [백준/Python] 3649 로봇 프로젝트

    문제링크 : https://www.acmicpc.net/problem/3649 3649번: 로봇 프로젝트 각 테스트 케이스마다 한 줄에 하나씩, 구멍을 완벽하게 막을 수 있는 두 조각이 없다면 'danger'를 출력한다. 막을 수 있는 경우에는 'yes ℓ1 ℓ2'를 출력한다. (ℓ1 ≤ ℓ2) 정답이 여러 개인 경우에 www.acmicpc.net 고려했던 방법들 1. 조합으로 풀수 있을까? 생각해보았지만 n이 1000000 까지 이므로 O(2^1000000)이 되어버려 조합은 사용할 수 없다. 2. 두번째는 레고 조각의 길이를 key 로 하는 해쉬맵을 만들어 [구멍의 너비 - 레고블럭 하나] 의 값이 해쉬맵에 존재하는지 판단하는 방법이 떠올랐다. 하지만 메모리 초과가 났다. 3. 세번째로는 이분 탐색으..

    [백준/JS] 1205 등수 구하기

    문제링크: https://www.acmicpc.net/problem/1205 1205번: 등수 구하기 첫째 줄에 N, 태수의 새로운 점수, 그리고 P가 주어진다. P는 10보다 크거나 같고, 50보다 작거나 같은 정수, N은 0보다 크거나 같고, P보다 작거나 같은 정수이다. 그리고 모든 점수는 2,000,000,000보 www.acmicpc.net 배열 정렬과 해쉬맵을 사용해서 푼 문제이다. 카테고리를 보니까 구현이라고 되어있더라. 해쉬맵 말고 배열의 index 를 사용할까 했는데, 최악의 경우 2,000,000,000 이 들어올 수 있으므로 불필요한 메모리를 사용할 것 같아 해쉬맵을 사용했다. 1. 테스트 케이스를 보면 N 이 0인 경우가 존재한다. 이 경우 때문에 삼항 연산자를 사용해 data 를 ..

    [백준/JS] 2529 부등호

    문제링크: https://www.acmicpc.net/problem/2529 2529번: 부등호 두 종류의 부등호 기호 ‘’가 k개 나열된 순서열 A가 있다. 우리는 이 부등호 기호 앞뒤에 서로 다른 한 자릿수 숫자를 넣어서 모든 부등호 관계를 만족시키려고 한다. 예를 들어, 제시 www.acmicpc.net 완전탐색 + 순열을 사용해서 푼 문제이다. 1. DFS로 0 부터 N+1 까지의 순열을 만든다. 2. 재귀의 deps 가 N+1 이 되면 만들어진 순열의 값들이 부등호의 조건을 만족하는지 체크한다. const fs = require('fs'); BOJkey = false; let input = fs .readFileSync(BOJkey ? './javascript/2529/input.txt' : '..

    [백준/JS] 1700 멀티탭 스케줄링

    문제링크: https://www.acmicpc.net/problem/1700 1700번: 멀티탭 스케줄링 기숙사에서 살고 있는 준규는 한 개의 멀티탭을 이용하고 있다. 준규는 키보드, 헤어드라이기, 핸드폰 충전기, 디지털 카메라 충전기 등 여러 개의 전기용품을 사용하면서 어쩔 수 없이 각종 전 www.acmicpc.net 이 문제에 처음 접근할때 완탐을 생각했으나, 시간 복잡도가 3¹⁰⁰ 이 나와 안된다 라고 판단했다. 그래서 그리디 하게 접근을 했다. 스택을 하나 만들어 [사용횟수, 기기명] 으로 push 하여 사용횟수를 기준으로 내림차순 정렬을 했다. 그리고 멀티탭이 꽉찬경우 스택의 최상단을 pop 하고 새로운 기기를 넣는 방식을 사용했다. 하지만 위 방법으로도 문제를 풀 수 없었고, 도무지 해결방법..