티스토리 뷰

https://www.acmicpc.net/problem/30035

 

30035번: Tier and Rank

만약 주어진 티어들로 "Legend Legend"의 모든 유저의 티어를 정할 수 없다면 올바르지 않은 등급 시스템이므로 첫째 줄에 Invalid System이라고 출력한다. 그 외의 경우에, 친구가 자랑한 티어가 게임의

www.acmicpc.net

const input = require('fs')
	.readFileSync('./dev/stdin')
	.toString()
	.trim()
	.split('\n')
	.map((v) => v.trim().split(' '));
const [I, N] = input.shift().map(Number);
let rest = I;

const target = input.pop()[0];
const tiers = {};

for (let i = 0; i < input.length; i++) {
	let [str, num] = input[i];
	if (num.includes('%')) {
		num = +num.slice(0, num.length - 1);
		num = Math.floor((rest * num) / 100);
		tiers[str] = num;
		rest -= num;
	} else {
		num = +num;
		const M = Math.min(rest, num);
		tiers[str] = M;
		rest -= M;
	}
}

if (rest > 0) {
	console.log(`Invalid System`);
	process.exit();
}

if ([1, 2, 3, 4].includes(+target[target.length - 1])) {
	const subTier = +target[target.length - 1];
	const targetTier = target.slice(0, target.length - 1);

	if (!tiers[targetTier]) {
		console.log(`Liar`);
		process.exit();
	}
	let tierSize = tiers[targetTier];

	const subTiers = [];
	const subTierSize = Math.ceil(tierSize / 4);
	while (tierSize > 0) {
		if (tierSize >= subTierSize) {
			subTiers.push(subTierSize);
			tierSize -= subTierSize;
		} else {
			subTiers.push(tierSize);
			break;
		}
	}
	if (subTiers.length < subTier) {
		console.log(`Liar`);
		process.exit();
	}

	let base = 0;
	const tierList = Object.entries(tiers);

	for (let i = 0; i < tierList.length; i++) {
		if (tierList[i][0] == targetTier) break;
		else base += tierList[i][1];
	}

	for (let i = 0; i < subTier - 1; i++) {
		base += subTiers[i];
	}
	console.log(base + 1, base + subTiers[subTier - 1]);
} else {
	if (!tiers[target]) {
		console.log(`Liar`);
		process.exit();
	}

	let base = 0;
	const tierList = Object.entries(tiers);
	for (let i = 0; i < tierList.length; i++) {
		if (tierList[i][0] == target) break;
		else base += tierList[i][1];
	}
	console.log(base + 1, base + tiers[target]);
}
728x90
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함