백준22993 - 서든어택 3 node.js 본문
반응형
https://www.acmicpc.net/problem/22993
문제 풀이 방식
정렬과 반복문을 통해 풀이했다.
먼저, 두번째 줄에서 첫 번째 원소는 준원이의 공격력 K라고 하고, 나머지 원소를 플레이어 공격력의 집합 arr 라고 하자.
이후, 문제에서 자신보다 공격력이 낮은 플레이어를 잡을 경우, 해당 플레이어의 공격력을 흡수하는 조건이 주어졌기 때문에,
공격력의 집합인 arr를 오름차순으로 정렬하여 낮은 플레이어부터 맞상대하며 최대한 공격력(K)을 올릴 수 있도록 했다.
이 과정에서 맞닥뜨린 플레이어의 공격력이 준원이의 공격력보다 높다면 여기서 반복문을 중지하고 'No' 반환, 모든 플레이어를 순회하여 무찌를 수 있다면 'Yes'를 반환하도록 했다.
(추가로 1 <= N <= 100000)인 제한 조건에 따라, 준원이만 존재하는 경우도 있는데, 이는 '준원이만 생존'을 만족하기 때문에 'Yes'를 출력하면 된다.)
전체 소스 코드
const fs = require("fs");
const input = fs
.readFileSync(process.platform === "linux" ? "/dev/stdin" : "입력.txt")
.toString()
.trim()
.split("\n");
function solution(data) {
const N = +data[0];
if (N == 1) {
console.log("Yes");
return;
}
let [K, ...arr] = data[1].split(" ").map(Number);
let i = 0;
arr.sort();
let result = true;
while (i < N - 1) {
if (K > arr[i]) K += arr[i];
else {
result = false;
break;
}
i++;
}
console.log(result ? "Yes" : "No");
}
solution(input);
반응형
'개발 > algorithm' 카테고리의 다른 글
백준1948 - 임계경로 (위상정렬 & 백트래킹) node.js (0) | 2024.01.25 |
---|---|
백준2252 - 줄 세우기 (위상정렬) node.js (1) | 2024.01.23 |
백준3182 - 한동이는 공부가 하기 싫어! (DFS) node.js (0) | 2024.01.19 |
백준1051 - 숫자 정사각형 (완전탐색) node.js (0) | 2024.01.17 |
백준4673 - 셀프 넘버 node.js (0) | 2024.01.15 |
Comments