๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๊ฐœ์ธ๊ณต๋ถ€/Algorithm

[๋ฐฑ์ค€][Node.js] 1431๋ฒˆ : ์‹œ๋ฆฌ์–ผ ๋ฒˆํ˜ธ

by ๐Ÿ‡๋ฐ•๋ด‰๋ด‰๐Ÿ‡ 2021. 7. 1.

 

 

Algorithm

-  ์‹œ๋ฆฌ์–ผ ๋ฒˆํ˜ธ -

 


 

๋ฌธ์ œ

๋‹ค์†œ์ด๋Š” ๊ธฐํƒ€๋ฅผ ๋งŽ์ด ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ฐ๊ฐ์˜ ๊ธฐํƒ€๋Š” ๋ชจ๋‘ ๋‹ค๋ฅธ ์‹œ๋ฆฌ์–ผ ๋ฒˆํ˜ธ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ๋‹ค์†œ์ด๋Š” ๊ธฐํƒ€๋ฅผ ๋นจ๋ฆฌ ์ฐพ์•„์„œ ๋นจ๋ฆฌ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ์—ฐ์ฃผํ•ด์ฃผ๊ธฐ ์œ„ํ•ด์„œ ๊ธฐํƒ€๋ฅผ ์‹œ๋ฆฌ์–ผ ๋ฒˆํ˜ธ ์ˆœ์„œ๋Œ€๋กœ ์ •๋ ฌํ•˜๊ณ ์ž ํ•œ๋‹ค.

 

๋ชจ๋“  ์‹œ๋ฆฌ์–ผ ๋ฒˆํ˜ธ๋Š” ์•ŒํŒŒ๋ฒณ ๋Œ€๋ฌธ์ž (A-Z)์™€ ์ˆซ์ž (0-9)๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค.

 

์‹œ๋ฆฌ์–ผ๋ฒˆํ˜ธ A๊ฐ€ ์‹œ๋ฆฌ์–ผ๋ฒˆํ˜ธ B์˜ ์•ž์— ์˜ค๋Š” ๊ฒฝ์šฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

 

1. A์™€ B์˜ ๊ธธ์ด๊ฐ€ ๋‹ค๋ฅด๋ฉด, ์งง์€ ๊ฒƒ์ด ๋จผ์ € ์˜จ๋‹ค.

2. ๋งŒ์•ฝ ์„œ๋กœ ๊ธธ์ด๊ฐ€ ๊ฐ™๋‹ค๋ฉด, A์˜ ๋ชจ๋“  ์ž๋ฆฌ์ˆ˜์˜ ํ•ฉ๊ณผ B์˜ ๋ชจ๋“  ์ž๋ฆฌ์ˆ˜์˜ ํ•ฉ์„ ๋น„๊ตํ•ด์„œ ์ž‘์€ ํ•ฉ์„ ๊ฐ€์ง€๋Š” ๊ฒƒ์ด ๋จผ์ €์˜จ๋‹ค. (์ˆซ์ž์ธ ๊ฒƒ๋งŒ ๋”ํ•œ๋‹ค)

3. ๋งŒ์•ฝ 1, 2๋ฒˆ ๋‘˜ ์กฐ๊ฑด์œผ๋กœ๋„ ๋น„๊ตํ•  ์ˆ˜ ์—†์œผ๋ฉด, ์‚ฌ์ „์ˆœ์œผ๋กœ ๋น„๊ตํ•œ๋‹ค. ์ˆซ์ž๊ฐ€ ์•ŒํŒŒ๋ฒณ๋ณด๋‹ค ์‚ฌ์ „์ˆœ์œผ๋กœ ์ž‘๋‹ค.

 

์‹œ๋ฆฌ์–ผ์ด ์ฃผ์–ด์กŒ์„ ๋•Œ, ์ •๋ ฌํ•ด์„œ ์ถœ๋ ฅํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

 

์ž…์ถœ๋ ฅ ์˜ˆ์‹œ

 

๋ฌธ์ œ ํ’€๊ธฐ

const readline = require("readline");
const rl = readline.createInterface({
	input: process.stdin,
	output: process.stdout,
});
let input = [];
rl.on("line", function (line) {
	input.push(line.toString());
}).on("close", function () {
	input.shift();
input.sort((a, b) => a.length - b.length);

for (let i = 0; i < input.length; i++) {
	let sum = 0;
	for (let j = 0; j < input[i].length; j++) {
		if (!isNaN(input[i][j])) sum += +input[i][j];
	}
	input[i] = [input[i], sum];
}

let result = [];

let i = 0;
while (true) {
	// ๋‹จ์–ด์˜ ๊ธธ์ด
	let strLen = input.filter((el) => el[0].length === input[i][0].length);
	if (strLen.length === 1) {
		result = result.concat(strLen[0][0]);
	} else {
		// ์ˆซ์ž์˜ ๋ง์…ˆ
		let sumLen = strLen.sort((a, b) => a[1] - b[1]);
		let j = 0;
		while (true) {
			let sameLen = sumLen.filter((el) => el[1] === sumLen[j][1]);
			if (sameLen.length === 1) {
				result = result.concat(sameLen[0][0]);
			} else {
				sameLen.sort();
				result = result.concat(sameLen.map((el) => el[0]));
			}
			j += sameLen.length;
			if (j >= sumLen.length) break;
		}
	}
	i += strLen.length;
	if (i >= input.length) break;
}

console.log(result.join('\n'));
	process.exit();
});

 

 

 

๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€