백준/그리디
-
백준 1700 nodejs백준/그리디 2023. 2. 19. 11:46
문제 https://www.acmicpc.net/problem/1700 1700번: 멀티탭 스케줄링 기숙사에서 살고 있는 준규는 한 개의 멀티탭을 이용하고 있다. 준규는 키보드, 헤어드라이기, 핸드폰 충전기, 디지털 카메라 충전기 등 여러 개의 전기용품을 사용하면서 어쩔 수 없이 각종 전 www.acmicpc.net 풀이 그리디 알고리즘을 이용한다. 해당 기기가 멀티탭에 꽂혀있는지 확인한다. 꽂혀있지 않다면, 콘센트에 남은 칸이 있는지 확인한다. 남은 칸이 없다면, 앞으로 사용하지 않을 콘센트를 뽑는다. 앞으로 사용하지 않을 콘센트가 없다면, 가장 나중에 사용할 콘센트를 뽑는다. let [[N, K], I] = `${require('fs').readFileSync(0)}`.trim().split`\n`...
-
백준 2437 nodejs백준/그리디 2023. 2. 17. 13:35
문제 https://www.acmicpc.net/problem/2437 2437번: 저울 하나의 양팔 저울을 이용하여 물건의 무게를 측정하려고 한다. 이 저울의 양 팔의 끝에는 물건이나 추를 올려놓는 접시가 달려 있고, 양팔의 길이는 같다. 또한, 저울의 한쪽에는 저울추들만 놓 www.acmicpc.net 풀이 추를 이용해 만들 수 있는 가장 큰 연속된 수 o를 초기화한다. 오름차순으로 정렬된 저울에 추 x를 하나씩 추가한다. o + 1보다 x가 크면 연속된 수 o가 더 이상 커질 수 없다. let [[N], I] = `${require('fs').readFileSync(0)}`.trim().split`\n`.map(e => e.split` `.map(Number)) I.sort((a, b) => a -..
-
백준 12904 nodejs백준/그리디 2023. 1. 15. 10:37
문제 https://www.acmicpc.net/problem/12904 풀이 T의 마지막 글자가 'A'이면 꺼내고, 'B'이면 꺼낸 후 뒤집는다. S와 T의 길이가 같아지면 두 문자열이 같은지 비교한다. let [S, T] = require('fs').readFileSync('/dev/stdin').toString().trim().split('\n').map(e => e.split('')) while (S.length < T.length) { const x = T.pop() if (x == 'B') T.reverse() } console.log(+(S.join('') == T.join(''))) 참조 https://velog.io/@ywc8851/%EB%B0%B1%EC%A4%80-12904-A%EC%9..
-
백준 11000 nodejs백준/그리디 2023. 1. 14. 22:19
문제 https://www.acmicpc.net/problem/11000 풀이 시작 시간과 끝 시간을 분리하여 시간 순으로 정렬한 후, 수업이 시작하면 강의실 수 room을 늘리고 끝나면 room을 줄인다. room의 최댓값을 출력한다. let [[], ...I] = require('fs').readFileSync('/dev/stdin').toString().trim().split('\n').map(e => e.split(' ').map(Number)) I = I.map(([s, e]) => [[s, 0], [e, 1]]).flat().sort((a, b) => a[0] - b[0] || b[1] - a[1]) let [o, room] = [0, 0] I.forEach(([, isE]) => (o = M..
-
백준 1339 nodejs백준/그리디 2023. 1. 13. 20:14
문제 https://www.acmicpc.net/problem/1339 풀이 알파벳 배열 A에 자릿수를 곱해 사용 횟수를 저장한다. 사용 횟수가 많은 순서대로 정렬하여 9 ~ 0을 곱해 답을 구한다. let [[N, ...I], A, x] = [require('fs').readFileSync('/dev/stdin').toString().trim().split('\n'), Array(26).fill(0), 9] for (let e of I) for (let i = 0; i e).sort((a, b) => b - a).reduce((a, b..