알고리즘
-
[백준 / javascript] 4949번 균형잡힌 세상알고리즘 2023. 4. 4. 03:17
https://www.acmicpc.net/problem/4949 const readFile = process.platform === 'linux' ? '/dev/stdin' : 't.txt'; const input = require('fs') .readFileSync(readFile) .toString() .trim() .split('\\n'); const open = ['(', '[']; const close = [')', ']']; let stack; const answer = []; input.slice(0, input.length - 1).forEach((v) => { let check = false; stack = []; for (let i = 0; i < v.length; i++) { if ..
-
[백준 / javascript] 25325번 학생 인기도 측정알고리즘 2023. 3. 31. 13:55
https://www.acmicpc.net/problem/25325 25325번: 학생 인기도 측정 학생 이름이 공백으로 구분된 문자열 A가 주어진다. 문자열 A에는 중복된 학생 이름이 존재하지 않는다. 학생 이름은 알파벳 소문자로 이루어져 있다. 각 학생이 좋아하는 학생의 학생 이름 목록 www.acmicpc.net // 25325 : 학생 인기도 측정 const readFile = 'dev/stdin'; const input = require('fs') .readFileSync(readFile) .toString() .trim() .split('\\n'); const n = input.shift(); const student = input.shift().split(' '); let obj = {}; ..
-
[백준 / javascript] 2816번 디지털 티비알고리즘 2023. 3. 29. 15:11
https://www.acmicpc.net/problem/2816 ‘1’, ‘4’번만 이용해서 풀었다. // 2816 : 디지털 티비 const readFile = '/dev/stdin'; const [n, ...input] = require('fs') .readFileSync(readFile) .toString() .trim() .split('\\n'); let idx1 = input.indexOf('KBS1'); let idx2 = input.indexOf('KBS2'); idx2 = idx1 > idx2 ? ++idx2 : idx2; let result = ''; for (let i = 0; i < idx1; i++) { result += '1'; } for (let i = 0; i < idx1; ..
-
[백준 / javascript] 13458번 시험감독알고리즘 2023. 3. 29. 00:58
https://www.acmicpc.net/problem/13458 처음에 각 시험장의 응시생 수(a)에서 총 감독관이 감독할 수 있는 응시생의 수(b)를 빼고 남은 응시생의 수를 또 부감독관이 감독할 수 있는 응시생의 수(c)로 빼서 합걔를 구하려고 했더니 백준에서 시간초과가 발생했다. 시간초과가 발생한 코드 const readFile = '/dev/stdin'; const input = require('fs') .readFileSync(readFile) .toString() .trim() .split('\n'); const [n, people, supervisor] = input; const [b, c] = supervisor.split(' ').map((i) => Number(i)); const a..
-
[백준] 1935번 후위 표기식2(javascript)알고리즘 2023. 3. 28. 02:22
https://www.acmicpc.net/problem/1935 후위 표기식을 처음들어봤고 감이 전혀 잡히지 않아 구글링을 통해 문제를 풀게 되었다. 입력값에서 피연산자의 개수와 후위 표기식, 후위표기식에 대응하는 값이 주어져서 어떻게 분해해야 하나 싶었는데, rest 문법을 사용하면 되는 문제였다. 분명 공부했는데 머릿속에서 떠오르지 못해서 아쉽다. 후위 표기법의 핵심은 연산자를 만나면 연산자 직전의 두 숫자를 연산해주고 다시 스택에 넣는 것이다. 정답 코드는 다음과 같다. // 1935 : 후위 표기식2 const readFile = '/dev/stdin'; const input = require('fs') .readFileSync(readFile) .toString() .trim() .split(..
-
[백준] 1931번 회의실 배정(javascript)알고리즘 2023. 3. 24. 15:11
https://www.acmicpc.net/problem/1931 // 1931 : 회의실 배정 const [n, ...arr] = require('fs') .readFileSync('/dev/stdin') .toString() .trim() .split('\n'); const times = arr .map((num) => num.split(' ').map((num) => +num)) .sort((a, b) => { // 끝나는 시간이 같을 경우 시작 시간으로 오름차순 정렬 if (a[1] === b[1]) { return a[0] - b[0]; } else { // 끝나는 시간 기준 오름차순 정렬 return a[1] - b[1]; } }); let endTime = 0; // 최근 회의 끝난 시각 l..
-
[백준] 10798번 세로읽기(javascript)알고리즘 2023. 3. 21. 02:14
https://www.acmicpc.net/problem/10798 // 10798 : 세로읽기 const input = require('fs') .readFileSync('/dev/stdin') .toString() .trim() .split('\n'); const maxLength = Math.max(...input.map((i) => i.length)); let answer = ''; for (let i = 0; i < maxLength; i++) { for (let j = 0; j < input.length; j++) { answer += input[j][i] || ''; } } console.log(answer); Uploaded by Notion2Tistory v1.1.0
-
[백준] 2960번 에라토스테네스의 체(javascript)알고리즘 2023. 3. 21. 02:14
https://www.acmicpc.net/problem/2960 // 2960 : 에라토스테네스의 체 const [n, k] = require('fs') .readFileSync('/dev/stdin') .toString() .trim() .split(' ') .map((v) => +v); const arr = []; for (let i = 2; i { if (v % prime == 0) { // 배수 제거 arr.splice(arr.indexOf(v), 1); answer = v; cnt++; } if (cnt === k) { return true; } }); } console.log(answer); Uploaded by Notion2Tistory v1.1.0