[ ๐—•๐—ข๐— ] 1759๋ฒˆ ์•”ํ˜ธ ๋งŒ๋“ค๊ธฐ - ์กฐํ•ฉ | JavaScript

NewHaยท2025๋…„ 5์›” 2์ผ
0
post-thumbnail

๐ŸŽฏ ๋ฌธ์ œ ์„ค๋ช…

๐Ÿงฉ ๋ฐฑ์ค€ 1759๋ฒˆ - ์•”ํ˜ธ ๋งŒ๋“ค๊ธฐ | ๊ณจ๋“œ3

๋ฐ”๋กœ ์–ด์ œ ์ตœ๋ฐฑ์ค€ ์กฐ๊ต๊ฐ€ ๋ฐฉ ์—ด์‡ ๋ฅผ ์ฃผ๋จธ๋‹ˆ์— ๋„ฃ์€ ์ฑ„ ๊นœ๋นกํ•˜๊ณ  ์„œ์šธ๋กœ ๊ฐ€ ๋ฒ„๋ฆฌ๋Š” ํ™ฉ๋‹นํ•œ ์ƒํ™ฉ์— ์ง๋ฉดํ•œ ์กฐ๊ต๋“ค์€, 702ํ˜ธ์— ์ƒˆ๋กœ์šด ๋ณด์•ˆ ์‹œ์Šคํ…œ์„ ์„ค์น˜ํ•˜๊ธฐ๋กœ ํ•˜์˜€๋‹ค. ์ด ๋ณด์•ˆ ์‹œ์Šคํ…œ์€ ์—ด์‡ ๊ฐ€ ์•„๋‹Œ ์•”ํ˜ธ๋กœ ๋™์ž‘ํ•˜๊ฒŒ ๋˜์–ด ์žˆ๋Š” ์‹œ์Šคํ…œ์ด๋‹ค.

์•”ํ˜ธ๋Š” ์„œ๋กœ ๋‹ค๋ฅธ L๊ฐœ์˜ ์•ŒํŒŒ๋ฒณ ์†Œ๋ฌธ์ž๋“ค๋กœ ๊ตฌ์„ฑ๋˜๋ฉฐ ์ตœ์†Œ ํ•œ ๊ฐœ์˜ ๋ชจ์Œ(a, e, i, o, u)๊ณผ ์ตœ์†Œ ๋‘ ๊ฐœ์˜ ์ž์Œ์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค๊ณ  ์•Œ๋ ค์ ธ ์žˆ๋‹ค. ๋˜ํ•œ ์ •๋ ฌ๋œ ๋ฌธ์ž์—ด์„ ์„ ํ˜ธํ•˜๋Š” ์กฐ๊ต๋“ค์˜ ์„ฑํ–ฅ์œผ๋กœ ๋ฏธ๋ฃจ์–ด ๋ณด์•„ ์•”ํ˜ธ๋ฅผ ์ด๋ฃจ๋Š” ์•ŒํŒŒ๋ฒณ์ด ์•”ํ˜ธ์—์„œ ์ฆ๊ฐ€ํ•˜๋Š” ์ˆœ์„œ๋กœ ๋ฐฐ์—ด๋˜์—ˆ์„ ๊ฒƒ์ด๋ผ๊ณ  ์ถ”์ธก๋œ๋‹ค. ์ฆ‰, abc๋Š” ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋Š” ์•”ํ˜ธ์ด์ง€๋งŒ bac๋Š” ๊ทธ๋ ‡์ง€ ์•Š๋‹ค.

์ƒˆ ๋ณด์•ˆ ์‹œ์Šคํ…œ์—์„œ ์กฐ๊ต๋“ค์ด ์•”ํ˜ธ๋กœ ์‚ฌ์šฉํ–ˆ์„ ๋ฒ•ํ•œ ๋ฌธ์ž์˜ ์ข…๋ฅ˜๋Š” C๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค๊ณ  ํ•œ๋‹ค. ์ด ์•ŒํŒŒ๋ฒณ์„ ์ž…์ˆ˜ํ•œ ๋ฏผ์‹, ์˜์‹ ํ˜•์ œ๋Š” ์กฐ๊ต๋“ค์˜ ๋ฐฉ์— ์นจํˆฌํ•˜๊ธฐ ์œ„ํ•ด ์•”ํ˜ธ๋ฅผ ์ถ”์ธกํ•ด ๋ณด๋ ค๊ณ  ํ•œ๋‹ค. C๊ฐœ์˜ ๋ฌธ์ž๋“ค์ด ๋ชจ๋‘ ์ฃผ์–ด์กŒ์„ ๋•Œ, ๊ฐ€๋Šฅ์„ฑ ์žˆ๋Š” ์•”ํ˜ธ๋“ค์„ ๋ชจ๋‘ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

์ž…๋ ฅ

  • ์ฒซ์งธ ์ค„ : ์„œ๋กœ ๋‹ค๋ฅธ L๊ฐœ์˜ ์•ŒํŒŒ๋ฒณ ๊ฐœ์ˆ˜, ์กฐ๊ต๋“ค์ด ์•”ํ˜ธ๋กœ ์‚ฌ์šฉํ–ˆ์„ ๋ฒ•ํ•œ ๋ฌธ์ž์˜ ์ข…๋ฅ˜ C๊ฐ€์ง€
    • 3 โ‰ค L โ‰ค C โ‰ค 15
  • ๋‘˜์งธ ์ค„: C๊ฐœ์˜ ๋ฌธ์ž๋“ค๋กœ, ์ฃผ์–ด์ง€๋Š” ๋ฌธ์ž๋“ค์€ ์•ŒํŒŒ๋ฒณ ์†Œ๋ฌธ์ž์ด๋ฉฐ, ์ค‘๋ณต๋˜๋Š” ๊ฒƒ์€ ์—†๋‹ค.
4 6
a t c i s w

์ถœ๋ ฅ

๊ฐ ์ค„์— ํ•˜๋‚˜์”ฉ, ์‚ฌ์ „์‹์œผ๋กœ ๊ฐ€๋Šฅ์„ฑ ์žˆ๋Š” ์•”ํ˜ธ๋ฅผ ๋ชจ๋‘ ์ถœ๋ ฅํ•œ๋‹ค.

acis
acit
aciw
acst
acsw
actw
aist
aisw
aitw
astw
cist
cisw
citw
istw

๐Ÿ‘ฉ๐Ÿปโ€๐Ÿ’ป ๋ฌธ์ œ ํ’€์ด

์ด ๋ฌธ์ œ๋Š” ์ถœ๋ ฅ ๊ฒฐ๊ณผ์—์„œ ์•ŒํŒŒ๋ฒณ์ด ํ•ญ์ƒ ์˜ค๋ฆ„์ฐจ์ˆœ(์‚ฌ์ „ ์ˆœ)์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰ ์ˆœ์„œ๊ฐ€ ๊ณ ์ •๋˜์–ด ์žˆ๊ณ  ์„ ํƒ๋งŒ ํ•˜๋ฉด ๋˜๋ฏ€๋กœ ์กฐํ•ฉ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ์ž…๋ ฅ ๊ฐ’์„ ๋ฐ›์„ ๋•Œ, ์‚ฌ์ „ ์ˆœ์œผ๋กœ ์ •๋ ฌํ•ด์ฃผ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

const fs = require("fs");
const input = fs.readFileSync("/dev/stdin").toString().trim().split('\n');;
const [L, C] = input[0].split(' ').map(Number);
const letters = input[1].split(' ').sort(); // ์•ŒํŒŒ๋ฒณ์„ ์‚ฌ์ „์ˆœ์œผ๋กœ ์ •๋ ฌ!

๊ทธ ๋‹ค์Œ, ์žฌ๊ท€์ ์œผ๋กœ ์กฐํ•ฉ์„ ์ฐพ์Šต๋‹ˆ๋‹ค. letters ๋ฐฐ์—ด์„ ์ˆœํšŒํ•˜๋ฉด์„œ comb ๋ฐฐ์—ด์„ ๋งŒ๋“ค๊ณ , comb ๋ฐฐ์—ด์˜ ๊ธธ์ด๊ฐ€ L์ด ๋˜๋ฉด ์กฐ๊ฑด์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

๋ชจ์Œ์ด 1๊ฐœ ์ด์ƒ์ด๊ณ , ์ž์Œ์ด 2๊ฐœ ์ด์ƒ์„ ๋งŒ์กฑํ•˜๋Š” ์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ๋ชจ์Œ ๋ฐฐ์—ด์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

const vowel = ['a', 'e', 'i', 'o', 'u'];

๊ทธ๋ฆฌ๊ณ  ํ•จ์ˆ˜ ์•ˆ์—์„œ, ์กฐ๊ฑด์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

function getCombinations(start, comb) {
	// comb ๋ฐฐ์—ด์˜ ๊ธธ์ด๊ฐ€ L์ด๋ผ๋ฉด, ์กฐ๊ฑด์„ ํ™•์ธ
	if(comb.length === L){
		// ๋ชจ์Œ์„ ํ•„ํ„ฐ๋งํ•ด์„œ ๊ฐœ์ˆ˜๋ฅผ ์„ธ์–ด์ค๋‹ˆ๋‹ค.
		const vowelCount = comb.filter(ch => vowel.includes(ch)).length;
		// ์ „์ฒด ๊ธธ์ด์—์„œ ๋ชจ์Œ์˜ ๊ฐœ์ˆ˜๋ฅผ ๋บด๋ฉด ์ž์Œ์˜ ๊ฐœ์ˆ˜๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.
		const consonantCount = comb.length - vowelCount;
		// ๋ชจ์Œ์ด 1๊ฐœ ์ด์ƒ, ์ž์Œ์ด 2๊ฐœ ์ด์ƒ์ธ์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
		if(vowelCount >= 1 && consonantCount >= 2) {
			// ๋งž๋‹ค๋ฉด ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.
			console.log(comb.join(''));
		}
		// ๋งž๋‹ค๋ฉด ์ถœ๋ ฅํ•˜๊ณ , ์•„๋‹ˆ๋ผ๋ฉด ๊ทธ๋ƒฅ, ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค.
		return;
	}
}

๊ทธ๋ฆฌ๊ณ  ์žฌ๊ท€์ ์œผ๋กœ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•ด์ฃผ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋•Œ, ๋„˜๊ฒจ์ฃผ๋Š” start์™€ comb ๋ฐฐ์—ด์„ ์ถ”๊ฐ€ํ•ด ์ฃผ๋ฉด์„œ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค.

function getCombinations(start, comb) {
	...
	
	for(let i = start; i < C; i++) {
		getCombinations(i + 1, [...comb, letters[i]])
	}
}

์ตœ์ข… ์ฝ”๋“œ

const fs = require("fs");
const input = fs.readFileSync("/dev/stdin").toString().trim().split('\n');;
const [L, C] = input[0].split(' ').map(Number);
const letters = input[1].split(' ').sort();

const vowel = ['a', 'e', 'i', 'o', 'u'];

function getCombinations(start, comb) {
	if(comb.length === L){
		const vowelCount = comb.filter(ch => vowel.includes(ch)).length;
		const consonantCount = comb.length - vowelCount;
		if (vowelCount >= 1 && consonantCount >= 2){
			console.log(comb.join(''));
		}
		return;
	}
	
	for(let i = start; i < C; i++) {
		getCombinations(i + 1, [...comb, letters[i]])
	}
}

getCombinations(0, [])

profile
๋ฐฑ ๋ฒˆ์„ ๋ณด๋ฉด ํ•œ ๊ฐ€์ง€๋Š” ์•ˆ๋‹ค ๐Ÿ‘€

0๊ฐœ์˜ ๋Œ“๊ธ€