하루 알고리즘(JS)

    [바미] 카드2

    문제https://www.acmicpc.net/problem/2164코드const fs = require('fs');const input = fs.readFileSync('/dev/stdin').toString().trim();const N = parseInt(input, 10);class Queue { constructor() { this.queue = []; this.front = 0; this.back = 0; } push(x) { this.queue[this.back++] = x; } shift() { if (this.front !== this.back) { const value = thi..

    [바미] 큐 2

    문제https://www.acmicpc.net/problem/18258코드const fs = require('fs');const input = fs.readFileSync('/dev/stdin').toString().trim().split('\n');const N = parseInt(input[0], 10); // 명령의 수const commands = input.slice(1); // 명령 리스트class Queue { constructor() { this.queue = []; this.frontIndex = 0; this.backIndex = 0; } push(x) { this.queue[this.backIndex++] = x;..

    [바미] 도키도키 간식드리미

    문제https://www.acmicpc.net/problem/12789 코드const fs = require('fs');const input = fs.readFileSync('/dev/stdin').toString().trim().split('\n');const N = parseInt(input[0], 10);const students = input[1].split(' ').map(Number);const stack = [];let next = 1; // 다음으로 간식을 받아야 하는 학생의 번호students.forEach(student => { while (stack.length > 0 && stack[stack.length - 1] === next) { stack.pop(); ..

    [바미] 균형잡힌 세상

    문제https://www.acmicpc.net/problem/4949코드const fs = require('fs');const input = fs.readFileSync('/dev/stdin').toString().trim().split('\n');// 결과를 저장할 배열const results = [];input.forEach(line => { if (line === '.') return; // 입력의 종료 조건인 '.' 만 단독으로 있는 경우 const stack = []; let balanced = true; for (let char of line) { if (char === '(' || char === '[') { stack.push(char)..

    [바미] 괄호

    문제https://www.acmicpc.net/problem/9012 코드const fs = require('fs');const input = fs.readFileSync('/dev/stdin').toString().trim().split('\n');const T = parseInt(input[0], 10); // 테스트 케이스의 수const results = [];function checkVPS(parenthesis) { const stack = []; for (const char of parenthesis) { if (char === '(') { stack.push(char); // '('를 만나면 스택에 추가 } else if (stack.le..

    [바미] 제로

    문제https://www.acmicpc.net/problem/10773코드const fs = require('fs');const input = fs.readFileSync('/dev/stdin').toString().trim().split('\n');const K = parseInt(input[0], 10);const stack = [];for (let i = 1; i acc + curr, 0);// 결과 출력console.log(sum);문제 해설이 문제는 스택을 활용하여 지정된 명령에 따라 숫자를 추가하거나 제거하고, 최종적으로 남은 숫자들의 합을 계산하는 문제입니다.입력된 숫자가 0이면 가장 최근에 입력된 숫자를 삭제하고, 그렇지 않은 경우 입력된 숫자를 스택에 추가해야 하죠. 문제 아래에 힌트가..

    [바미] 스택 2

    문제https://www.acmicpc.net/problem/28278코드const fs = require('fs');const input = fs.readFileSync('/dev/stdin').toString().trim().split('\n');const N = parseInt(input[0], 10);const commands = input.slice(1);const stack = [];const output = [];for (let i = 0; i 0 ? stack.pop() : -1); break; case '3': // 스택에 들어있는 정수의 개수를 출력한다. output.push(stack.length); ..

    [바미] 서로 다른 부분 문자열의 개수

    문제https://www.acmicpc.net/problem/11478 코드const fs = require('fs');const input = fs.readFileSync('/dev/stdin').toString().trim();const uniqueSubstrings = new Set();// 입력받은 문자열에서 가능한 모든 부분 문자열을 추출for (let start = 0; start 문제해설문자열 S의 모든 서로 다른 부분 문자열의 개수를 찾는 문제입니다. Set을 사용하면 쉽게 풀 수 있는 문제죠. 입력 문자열 S에 대해 가능한 모든 부분 문자열을 생성하기 위해 두 개의 중첩된 반복문을 사용하여 각 반복에서 substring(start, end) 함수를 호출하여 시작 인덱스 start와 종료 ..

    [바미] 대칭 차집합

    문제https://www.acmicpc.net/problem/1269코드const fs = require('fs');const input = fs.readFileSync('/dev/stdin').toString().trim().split('\n');// 첫 번째 줄에서 집합 A와 B의 원소 개수 추출const [sizeA, sizeB] = input[0].split(' ').map(Number);// 집합 A와 B 생성const setA = new Set(input[1].split(' ').map(Number));const setB = new Set(input[2].split(' ').map(Number));// 대칭 차집합 계산const onlyA = Array.from(setA).filter(x =>..