κ°œμΈκ³΅λΆ€/Algorithm

[λ°±μ€€][Node.js] 5430번 : AC

πŸ‡λ°•λ΄‰λ΄‰πŸ‡ 2021. 11. 15. 23:34

 

 

Algorithm

-  AC -

 


 

문제

μ„ μ˜μ΄λŠ” 주말에 ν•  일이 μ—†μ–΄μ„œ μƒˆλ‘œμš΄ μ–Έμ–΄ ACλ₯Ό λ§Œλ“€μ—ˆλ‹€.

ACλŠ” μ •μˆ˜ 배열에 연산을 ν•˜κΈ° μœ„ν•΄ λ§Œλ“  언어이닀.

이 μ–Έμ–΄μ—λŠ” 두 κ°€μ§€ ν•¨μˆ˜ R(λ’€μ§‘κΈ°)κ³Ό D(버리기)κ°€ μžˆλ‹€.

 

ν•¨μˆ˜ R은 배열에 μžˆλŠ” 숫자의 μˆœμ„œλ₯Ό λ’€μ§‘λŠ” ν•¨μˆ˜μ΄κ³ , DλŠ” 첫 번째 숫자λ₯Ό λ²„λ¦¬λŠ” ν•¨μˆ˜μ΄λ‹€.

배열이 λΉ„μ–΄μžˆλŠ”λ° Dλ₯Ό μ‚¬μš©ν•œ κ²½μš°μ—λŠ” μ—λŸ¬κ°€ λ°œμƒν•œλ‹€.

 

ν•¨μˆ˜λŠ” μ‘°ν•©ν•΄μ„œ ν•œ λ²ˆμ— μ‚¬μš©ν•  수 μžˆλ‹€.

예λ₯Ό λ“€μ–΄, "AB"λŠ” Aλ₯Ό μˆ˜ν–‰ν•œ λ‹€μŒμ— λ°”λ‘œ μ΄μ–΄μ„œ Bλ₯Ό μˆ˜ν–‰ν•˜λŠ” ν•¨μˆ˜μ΄λ‹€.

예λ₯Ό λ“€μ–΄, "RDD"λŠ” 배열을 뒀집은 λ‹€μŒ 처음 두 숫자λ₯Ό λ²„λ¦¬λŠ” ν•¨μˆ˜μ΄λ‹€.

 

λ°°μ—΄μ˜ μ΄ˆκΈ°κ°’κ³Ό μˆ˜ν–‰ν•  ν•¨μˆ˜κ°€ μ£Όμ–΄μ‘Œμ„ λ•Œ, μ΅œμ’… κ²°κ³Όλ₯Ό κ΅¬ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€.

 

μž…μΆœλ ₯ μ˜ˆμ‹œ

 

문제 ν’€κΈ°

let fs = require("fs");
let input = fs.readFileSync("/dev/stdin")
	.toString()
	.trim()
	.split("\n");
input.shift();

for (let i = 0; i < input.length; i += 3) {
	let mission = input[i].split("");
	let arr = JSON.parse(input[i + 2]);
	let isError = false;
	let isChange = false;

	for (let j = 0; j < mission.length; j++) {
		if (mission[j] === "R") isChange = !isChange;
		else if (mission[j] === "D") {
			if (arr.length > 0) {
				if (isChange) arr.pop();
				else arr.shift();
			} else {
				isError = !isError;
				break;
			}
		}
	}
	if (isError) console.log("error");
	else {
		if (isChange) console.log(JSON.stringify(arr.reverse()));
		else console.log(JSON.stringify(arr));
	}
}

 

 

 

λ°˜μ‘ν˜•