전체 글
[백준 2573 - Node.js] 빙산
🔗 문제 링크 https://www.acmicpc.net/problem/2573 2573번: 빙산 첫 줄에는 이차원 배열의 행의 개수와 열의 개수를 나타내는 두 정수 N과 M이 한 개의 빈칸을 사이에 두고 주어진다. N과 M은 3 이상 300 이하이다. 그 다음 N개의 줄에는 각 줄마다 배열의 각 행을 www.acmicpc.net ✏️ 풀이 const input = require('fs').readFileSync('/dev/stdin').toString().trim().split('\n'); const [N, M] = input.shift().split(' ').map(Number); const iceberg = input.map(v => v.split(' ').map(Number)); const off..
[jsDelivr] 무료 CDN 서버로 github 저장소 파일 배포하기
🚚 jsDelivr jsDelivr는 전세계에서 무료로 이용할 수 있는 CDN(Content Delivery Network) 서비스다. 전 세계 곳곳에 캐시 서버를 두고, 접속한 지역에서 가장 가까운 서버로부터 파일을 전송받게 되어 빠른 속도를 유지할 수 있다는 장점이 있습니다. jsDelivr는 무료이며 상업적으로도 이용할 수 있습니다. 다만, 이미지 CDN으로 사용하거나 대용량 파일 전송용으로 사용하는 것은 금지되어 있습니다. 📦️ github에 있는 파일을 jsDelivr로 CDN에 올리는 방법 별도의 업로드 과정이 필요 없고, 아래와 같은 형식으로 주소를 작성하면 됩니다. https://cdn.jsdelivr.net/gh/깃헙아이디/깃헙Repo이름@브랜치이름/파일이름 예를들어 https://git..
[Flex & Grid] HTML/CSS 에디터 개발기
https://flexngrid.com/ 멋쟁이 사자처럼 프론트엔드 스쿨 1기를 수료한지 3달이 지나고, 멋사 디스코드에 제주코딩베이스캠프의 이호준 대표님께서 CSS flex와 grid를 실습할 수 있는 웹페이지와 e-book을 출간하는 프로젝트에 참여하실 분을 모집하시는 글을 올리셨다. 나는 예전부터 개발 교육용 웹페이지에 관심이 있다. 사실 멋사 기간동안 만들었던 프로젝트 중 하나인 Guten Tag도 초보자를 위한 마크업 교육용 웹을 목표로(목표는 좋았는데, 완성은 못했던..) 만든 것이었다. 이번에는 완성된 페이지를 만들 수 있을 것이란 기대감을 가지고 참여하게 되었다. 첫 회의 때 호준님께서 CSS 각 속성을 설명할 때 필요한 코드 에디터가 필요하다고 하셨다. 나는 에디터가 제일 재미있고 도전적..
[백준 1260 - Node.js] DFS와 BFS
🔗 문제 링크 https://www.acmicpc.net/problem/1260 1260번: DFS와 BFS 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사 www.acmicpc.net ✏️ 풀이 const input = require('fs').readFileSync('/dev/stdin').toString().trim().split('\n'); const [N, M, V] = input.shift().split(' ').map(Number); const edges = input.map(v => v.split(' ').map(..
[JS] Selection API로 선택된 텍스트 정보 가져오기
Selection API Selection API는 웹 브라우저에서 현재 선택된 텍스트 또는 커서의 위치에 관련된 정보 제공 및 선택된 텍스트와 커서의 위치를 조작할 수 있는 메서드들을 제공하는 Web API다. 2022년 현재 거의 대부분의 브라우저에서 지원하고 있다. 가나다라마바사 window.getSelection(); window.getSelection()은 현재 선택된 범위에 대한 Selection 객체를 반환한다. Selection 객체의 프로퍼티에 대해 알아보자. anchorNode / focusNode anchorNode와 focusNode는 각각 선택이 시작된 노드와 선택이 끝난 노드를 나타낸다. 위 예제에서 선택이 시작된 노드와 선택이 끝난 노드는 각각 "다"의 앞부분과 "마"의 뒷부분..
[백준 16234 - Node.js] 인구 이동
🔗 문제 링크 https://www.acmicpc.net/problem/16234 16234번: 인구 이동 N×N크기의 땅이 있고, 땅은 1×1개의 칸으로 나누어져 있다. 각각의 땅에는 나라가 하나씩 존재하며, r행 c열에 있는 나라에는 A[r][c]명이 살고 있다. 인접한 나라 사이에는 국경선이 존재한다. 모 www.acmicpc.net ✏️ 풀이 const input = require('fs').readFileSync('/dev/stdin').toString().trim().split('\n'); const [N, L, R] = input.shift().split(' ').map(Number); const land = input.map(v => v.split(' ').map(Number)); cons..
[백준 1707 - Node.js] 이분 그래프
🔗 문제 링크 https://www.acmicpc.net/problem/1707 1707번: 이분 그래프 입력은 여러 개의 테스트 케이스로 구성되어 있는데, 첫째 줄에 테스트 케이스의 개수 K가 주어진다. 각 테스트 케이스의 첫째 줄에는 그래프의 정점의 개수 V와 간선의 개수 E가 빈 칸을 사이에 www.acmicpc.net ✏️ 풀이 const input = require('fs').readFileSync('/dev/stdin').toString().trim().split('\n'); const K = +input.shift(); const SET_A = 1; const SET_B = 2; const dfs = (start, graph, visited) => { visited[start] = SET_A..
[프로그래머스 Level 2] 문자열 압축 - JavaScript
🔗 문제 링크 https://programmers.co.kr/learn/courses/30/lessons/60057 코딩테스트 연습 - 문자열 압축 데이터 처리 전문가가 되고 싶은 "어피치"는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문 programmers.co.kr ✏️ 풀이 function solution(s) { let compression = s; for (let i = 1; i 1 ? `${count}${target}` : target); target = matched; count = 1; } } } result.push(count > 1 ? `${count}${target}` : target)..
[프로그래머스 Level 2] 위장 - JavaScript
🔗 문제 링크 https://programmers.co.kr/learn/courses/30/lessons/42578 코딩테스트 연습 - 위장 programmers.co.kr ✏️ 풀이 function solution(clothes) { const clothList = clothes.reduce((acc, [, type]) => { acc[type] = (acc[type] || 0) + 1; return acc; }, {}); return Object.values(clothList).reduce((acc, v) => acc * (v + 1), 1) - 1; } 옷의 종류별 개수를 구하고, (각 종류별 개수 + 1)을 모두 곱한 것에서 1을 빼면 정답이다. 각 종류별로 옷을 고를 때, 해당 종류의 옷을 입지..
[백준 1520 - Node.js] 내리막길
🔗 문제 링크 https://www.acmicpc.net/problem/1520 1520번: 내리막 길 첫째 줄에는 지도의 세로의 크기 M과 가로의 크기 N이 빈칸을 사이에 두고 주어진다. 이어 다음 M개 줄에 걸쳐 한 줄에 N개씩 위에서부터 차례로 각 지점의 높이가 빈 칸을 사이에 두고 주어진다. www.acmicpc.net ✏️ 풀이 const input = require('fs').readFileSync('/dev/stdin').toString().trim().split('\n'); const [M, N] = input.shift().split(' ').map(Number); const map = input.map(v => v.split(' ').map(Number)); const offset = ..