const teammate = {
members : [{
name : "์ด ์",
address : "์์์",
age : 24,
hobby : "ํด๋์ ์์
๊ฐ์"
},
{
name: "์ต์์ฌ",
address: "์ฉ์ธ์",
age: 21,
hobby: "์ ๋ฌธ ์ฝ์ผ๋ฉฐ ๋ธ๋ฐ์น ์ฆ๊ธฐ๊ธฐ"
},
{
name: "๋ฌธ๊ท์",
address: "์ฑ๋จ์",
age: 23,
hobby: "๋
์์ ํจ๊ปํ๋ ํฐํ์"
},
{
name: "ํ์ ์ ",
address: "์ฉ์ธ์",
age: 23,
hobby: "์ฐจ ๋ง์๋ฉด์ ์์ํ๊ธฐ"
}],
printName : function() {
let nameStr = "์กฐ์ ์ด๋ฆ :"
this.members.forEach(member => {
nameStr += " " + member.name
});
console.log(nameStr);
},
printAddress : function() {
this.members.forEach(member => {
console.log(member.name + "์ ์ง์? -> " + member.address);
});
},
printAge : function() {
this.members.forEach(member => {
console.log(member.name + "์ ๋์ด๋ " + member.age+"์ด ์
๋๋ค");
});
},
printHobby : function() {
this.members.forEach(member => {
console.log(member.name + "์ ์ทจ๋ฏธ๋ " + member.hobby);
});
},
}
console.log();
console.log(teammate);
console.log();
teammate.printName();
console.log();
teammate.printAddress();
console.log();
teammate.printAge();
console.log();
teammate.printHobby();
members: [
{ name: '์ด ์', address: '์์์', age: 24, hobby: 'ํด๋์ ์์
๊ฐ์' },
{ name: '์ต์์ฌ', address: '์ฉ์ธ์', age: 21, hobby: '์ ๋ฌธ ์ฝ์ผ๋ฉฐ ๋ธ๋ฐ์น ์ฆ๊ธฐ๊ธฐ' },
{ name: '๋ฌธ๊ท์', address: '์ฑ๋จ์', age: 23, hobby: '๋
์์ ํจ๊ปํ๋ ํฐํ์' },
{ name: 'ํ์ ์ ', address: '์ฉ์ธ์', age: 23, hobby: '์ฐจ ๋ง์๋ฉด์ ์์ํ๊ธฐ' }
],
printName: [Function: printName],
printAddress: [Function: printAddress],
printAge: [Function: printAge],
printHobby: [Function: printHobby]
}
์กฐ์ ์ด๋ฆ : ์ด ์ ์ต์์ฌ ๋ฌธ๊ท์ ํ์ ์
์ด ์์ ์ง์? -> ์์์
์ต์์ฌ์ ์ง์? -> ์ฉ์ธ์
๋ฌธ๊ท์์ ์ง์? -> ์ฑ๋จ์
ํ์ ์ ์ ์ง์? -> ์ฉ์ธ์
์ด ์์ ๋์ด๋ 24์ด ์
๋๋ค
์ต์์ฌ์ ๋์ด๋ 21์ด ์
๋๋ค
๋ฌธ๊ท์์ ๋์ด๋ 23์ด ์
๋๋ค
ํ์ ์ ์ ๋์ด๋ 23์ด ์
๋๋ค
์ด ์์ ์ทจ๋ฏธ๋ ํด๋์ ์์
๊ฐ์
์ต์์ฌ์ ์ทจ๋ฏธ๋ ์ ๋ฌธ ์ฝ์ผ๋ฉฐ ๋ธ๋ฐ์น ์ฆ๊ธฐ๊ธฐ
๋ฌธ๊ท์์ ์ทจ๋ฏธ๋ ๋
์์ ํจ๊ปํ๋ ํฐํ์
ํ์ ์ ์ ์ทจ๋ฏธ๋ ์ฐจ ๋ง์๋ฉด์ ์์ํ๊ธฐ
/**
* ์ฐ์ YB,OB๋ฅผ ๊ตฌ๋ถํ์ฌ ๋ฆฌ์คํธ๋ฅผ ๋ง๋ ๋ค.
* ๋๋ค ํจ์๋ฅผ ํ์ฉํ์ฌ ์์ ๋ง๋ OB,YB ๋ฆฌ์คํธ์ ์์์ ์์ด์ค๋ค.
*
* ์ํ๋ ์กฐ๋ณ ์ต๋ ์ธ์์ ์ ์๋ก ์
๋ ฅ๋ฐ๋๋ค!
* ๊ทธ๋ผ ์ด ๋ช๊ฐ์ ์กฐ๊ฐ ์ง์ฌ์ง๋์ง ์ ์ ์๋๋ฐ, ๊ทธ ์กฐ์ ๊ฐ์๋งํผ ๋น ๋ฐฐ์ด์ ๋ง๋ ๋ค.
*
* ์ดํ OB ๋จผ์ ๊ฐ ์กฐ์ ๋ฐฐ์นํ๊ณ , ์ด์ด์ YB๋ค์ ์ด์ด์ ์กฐ์ ์ฐจ๋ก๋ก ๋ฐฐ์นํด์ค๋ค.
* ๋ง์ผ ํด๋น ์กฐ์ ์ต๋ค ์ธ์์ด ๋ค ์ฐจ ์๋ ๊ฒฝ์ฐ์๋, ์๋ฆฌ๊ฐ ๋จ์ ๊ณณ์ YB ์ธ์์ ๋ฐฐ์น์ํจ๋ค.
*/
// members ๋ฐ์ดํฐ import
import members from "./members.js";
// ์
๋ ฅ๊ฐ์ ๋ฐ๊ธฐ ์ํด "readline" ๋ชจ๋์ import ํด์ค๋ค.
import readline from "readline";
// ์
๋ ฅ๊ฐ์ ๋ฐ๊ธฐ ์ํ ์ธํฐํ์ด์ค ๊ฐ์ฒด
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
// ๋ฆฌ์คํธ์ ์์ ์์๋ค์ ๋ฌด์์๋ก ๋ฐ๊พธ์ด์ฃผ๋ ํจ์ --> ํผ์
-์์ด์ธ ์
ํ(Fisher-Yates shuffle)
function shuffle(array) {
for (let index = array.length - 1; index > 0; index--) {
// ๋ฌด์์ index ๊ฐ์ ๋ง๋ ๋ค. (0 ์ด์์ ๋ฐฐ์ด ๊ธธ์ด ๊ฐ)
const randomPosition = Math.floor(Math.random() * (index + 1));
// ์์๋ก ์๋ณธ ๊ฐ์ ์ ์ฅํ๊ณ , randomPosition์ ์ฌ์ฉํด ๋ฐฐ์ด ์์๋ฅผ ์๋๋ค.
const temporary = array[index];
array[index] = array[randomPosition];
array[randomPosition] = temporary;
}
}
// filter๋ฅผ ์ฌ์ฉํ์ฌ YB, OB๋ฅผ ๊ตฌ๋ถํด์ค๋ค.
let YBList = members.filter((member) => member.group == "YB");
let OBList = members.filter((member) => member.group == "OB");
// ๊ฐ๊ฐ์ ๋ฆฌ์คํธ๋ฅผ ๋ฌด์์๋ก ์ฌ๋ฐฐ์ดํ๋ค.
shuffle(YBList);
shuffle(OBList);
// ๋ฉค๋ฒ, OB, YB๋ค์ ์ธ์์๋ฅผ ์ ์ฅํ๋ค.
const allMemberCount = members.length;
const YBcount = YBList.length;
const OBcount = OBList.length;
// ์ต์ข
์ ์ผ๋ก ๊ตฌ์ฑ๋ ํ์ ๋ณ์๋ฅผ ์ด๊ธฐ๊ฐ ์์ด ์ ์ธํด์ค๋ค.
let teams;
console.log("์๋ฒ ํํธ ์ด ์ธ์ : ", allMemberCount);
console.log("์๋ฒ ํํธ OB ์ธ์ : ", OBList.length);
console.log("์๋ฒ ํํธ YB ์ธ์ : ", YBList.length);
let teamMemberCount; // ์
๋ ฅ๋ฐ์ ์กฐ์ ์ต๋์ธ์
console.log("\n์กฐ๋ณ ์ต๋ ์ธ์์ ์
๋ ฅํด์ฃผ์ธ์.");
// rl์ event-driven ๊ฐ์ฒด์ด๊ธฐ ๋๋ฌธ์ ๊ฐ์ฅ ๋ง์ง๋ง์ rl.close(); ๋ฅผ ํตํด ์
๋ ฅ์ด ๋๋ฌ์์ ์๋ ค์ฃผ์ด์ผํ๋ค.
// ๋ํ ์ฌ์ฉ์์๊ฒ ๊ฐ์ ์
๋ ฅ ๋ฐ์ ๋ค์ buildTeam() ํจ์๋ฅผ ์คํํ ์ ์๋๋ก rl.on() ์์์ ํด๋น ํจ์๊ฐ ์คํ๋๋๋ก ํด์ฃผ์๋ค.
rl.on("line", function (line) {
teamMemberCount = Number(line);
buildTeam();
rl.close();
});
// ๋ฉค๋ฒ๋ค์ ํ์ ๊พธ๋ฆฌ๋ ํจ์!
const buildTeam = () => {
// Math.ceil = ์์์ ์ดํ ์ฌ๋ฆผ
let groupCount = Math.ceil(allMemberCount / teamMemberCount);
console.log(`\n์ด๋ฒ ๋ชจ์์ ์ด ${groupCount}๊ฐ์ ์กฐ๋ก ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค!\n`);
// teams์ ๊ทธ๋ฃน์ ์๋งํผ์ ์์๋ฅผ ๊ฐ์ง ๋ฐฐ์ด์ ์ ์ธํ๊ณ
teams = new Array(groupCount);
// for๋ฌธ์ ํตํด teams์ ์์๋ค์ ๋ฐฐ์ด์ ํ๋ฒ ๋ ์ ์ธํ์ฌ 2์ฐจ ๋ฐฐ์ด์ ๋ง๋ค์ด์ค๋ค.
for (let i = 0; i < groupCount; i++) {
teams[i] = new Array();
}
// ๊ทธ๋ ๊ฒ ์์ฑ๋ ๋ฐฐ์ด์ ๋ค์๊ณผ ๊ฐ๋ค
// teams = [[1์กฐ],[2์กฐ],[3์กฐ],[4์กฐ]...]
// OB, YB์ ๋น์จ์ ์ต๋ํ ๋ง์ถ์ด์ผํ๊ธฐ ๋๋ฌธ์ ์ฐ์ ๊ฐ ์กฐ๋ง๋ค ๊ณจ๊ณ ๋ฃจ OB๋ฅผ ๋ฟ๋ ค์ค๋ค.
// OB์ ์ธ์๋ค์ ํ๋ํ๋ ์ฐจ๋ก๋ก ๊ทธ๋ฃน์ ๋ฃ์ด์ฃผ๊ณ , ๊ทธ๋ฃน๋ณด๋ค ์ธ์์ด ๋ง์ ๊ฒฝ์ฐ๊ฐ ๋น์ฐํ ๋ง์ผ๋ ๋ชจ๋ ์กฐ์ OB๊ฐ ํ๋ช
์ฉ ์ฐผ๋ค๋ฉด
// ๋ค์ 1์กฐ๋ถํฐ ์ฐจ๋ก๋ก ๋ฃ์ด์ฃผ๋๋ก ํ์๋ค.
for (let i = 0; i < OBcount; i++) {
teams[i % groupCount].push(OBList[i]);
}
// ์์ ์ ์ฐจ๋ก์ง๋ง, ์กฐ์ ๋ค์ด๊ฐ์ง ๋ชปํ๋ ์ธ์๋ค์ ์ํ ๋ฐฐ์ด์ ์ ์ธํ๋ค
// ํด๋น ๋ฐฐ์ด์ ์ฌ์ฉ์ ์๋์์ ์ค๋ช
ํ ์์ !
let surplus = new Array();
// ๊ฐ ์กฐ์ YB๋ฅผ ์ฑ์๋ฃ๋ ๋ฐฉ๋ฒ์ OB์ ๋์ผํ๋ค.
// ํ์ง๋ง ํ๋ ๋ ๊ณ ๋ คํด์ผํ ๊ฒ์, ์ฐ๋ฆฌ๋ ์กฐ์ ๋ค์ด๊ฐ ์ต๋ ์ธ์์ ์ฒดํฌํด์ผํ๋ค๋ ์ ์ด๋ค!
// ๊ทธ๋ ๊ธฐ์ for๋ฌธ ์์์, ํด๋น ์ธ์์ด ๋ค์ด๊ฐ ์กฐ์ ์ธ์์ด ์ต๋๋ก ์ฐผ๋์ง๋ฅผ ํ์ธํด์ฃผ๊ณ
// ์๋ฆฌ๊ฐ ๋จ์์๋ ๊ฒฝ์ฐ์๋ง push๋ฅผ ํด์ฃผ๊ณ , ์๋ฆฌ๊ฐ ๋ค ์ฐผ๋ค๋ฉด ์์ ๋ง๋ค์ด๋ surplus ๋ฐฐ์ด๋ก push ํด์ค๋ค.
for (let i = 0; i < YBcount; i++) {
if (teams[i % groupCount].length != teamMemberCount) {
teams[i % groupCount].push(YBList[i]);
} else {
surplus.push(YBList[i]);
}
}
// YB๊น์ง ์ ๋ถ ์กฐ์ง๊ธฐ๋ฅผ ์๋ฃํ๋ค๋ฉด, ์ต์ข
์ ์ผ๋ก surplus ๋ฐฐ์ด์ ๋จ์์๋ ์ฌ๋์ด ์๋์ง ํ์ธํ๋ค.!
// ํ๋ช
์ด๋ผ๋ ์๋ค๋ฉด ์์ง ์กฐ๋ฅผ ๋ฐฐ์ ๋ฐ์ง ๋ชปํ ์ฌ๋์ด ์๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์
// ํด๋น ์ธ์์ ํ์ธํ์ฌ, ์กฐ์ ์ต๋ ์ธ์์ ๋ค ์ฑ์ฐ์ง ์์ ์กฐ์ ์ฐจ๋ก๋ก ๋ฐฐ์ ํ๋ค.
if (surplus.length != 0) {
for (let i = 0; i < groupCount; i++) {
if (teams[i].length < teamMemberCount && surplus.length != 0) {
teams[i].push(surplus[0]);
surplus.shift();
}
}
}
// ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํด์ค๋ค!
for (let team in teams) {
console.log("====================");
console.log(Number(team) + 1, "์กฐ");
teams[team].forEach((member) => {
console.log(`์ด๋ฆ : ${member.name} (${member.group})`);
});
}
console.log("====================");
};
์๋ฒ ํํธ ์ด ์ธ์ : 37
์๋ฒ ํํธ OB ์ธ์ : 16
์๋ฒ ํํธ YB ์ธ์ : 21
์กฐ๋ณ ์ต๋ ์ธ์์ ์
๋ ฅํด์ฃผ์ธ์.
4
์ด๋ฒ ๋ชจ์์ ์ด 10๊ฐ์ ์กฐ๋ก ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค!
====================
1 ์กฐ
์ด๋ฆ : ๋ฐํ์ง (OB)
์ด๋ฆ : ์ฅ์ํ (OB)
์ด๋ฆ : ์ฃผํจ์ (YB)
์ด๋ฆ : ๋จ์ง์ค (YB)
====================
2 ์กฐ
์ด๋ฆ : ์ด๋ค์ (OB)
์ด๋ฆ : ์์ค์ (OB)
์ด๋ฆ : ์ด์ ์ค (YB)
์ด๋ฆ : ๊น์์ง (YB)
====================
3 ์กฐ
์ด๋ฆ : ์ฑ์ ์ (OB)
์ด๋ฆ : ์ค์์ (OB)
์ด๋ฆ : ๊น์๊ถ (YB)
์ด๋ฆ : ์กฐ์ฌํธ (YB)
====================
4 ์กฐ
์ด๋ฆ : ์ ์คํฌ (OB)
์ด๋ฆ : ์กฐ์ค์ (OB)
์ด๋ฆ : ์ด์นํ (YB)
์ด๋ฆ : ์ต์ง์ (YB)
====================
5 ์กฐ
์ด๋ฆ : ์ํธ์ (OB)
์ด๋ฆ : ๊นํฌ๋น (OB)
์ด๋ฆ : ๊น์ง์ฑ (YB)
์ด๋ฆ : ์ด๋๊ทผ (YB)
====================
6 ์กฐ
์ด๋ฆ : ์ด์ (OB)
์ด๋ฆ : ๋ฐ๋ํฌ (OB)
์ด๋ฆ : ์์ํ (YB)
์ด๋ฆ : ๊ตฌ๊ฑด๋ชจ (YB)
====================
7 ์กฐ
์ด๋ฆ : ๋ณ์ฃผํ (OB)
์ด๋ฆ : ์ด์ ์ (YB)
์ด๋ฆ : ์กฐ์ฐฌ์ฐ (YB)
์ด๋ฆ : ๋ฐ์ ํ (YB)
====================
8 ์กฐ
์ด๋ฆ : ๊ฐํํฌ (OB)
์ด๋ฆ : ์ฃผ์ด์ง์ฌ๋ (YB)
์ด๋ฆ : ๋ฌธ๊ท์ (YB)
====================
9 ์กฐ
์ด๋ฆ : ์ต์์ฌ (OB)
์ด๋ฆ : ํ์ ์ (YB)
์ด๋ฆ : ์ค์ง์ (YB)
====================
10 ์กฐ
์ด๋ฆ : ๊ณ ์ฑ์ฉ (OB)
์ด๋ฆ : ์ต์ ๋ฆผ (YB)
์ด๋ฆ : ๊ถ์ธํ (YB)
====================
math๋ ์ํ์์ ์ฌ์ฉ๋๋ ์์๋ ํจ์๋ค์ ๊ตฌํํด๋์ ๊ฐ์ฒด์ด๋ค!
์ด๋ฒ ๊ณผ์ ๋ฅผ ํ๋ฉด์ ์ฌ์ฉํ๊ฑฐ๋, ์๊ฒ๋ Math ๋ฉ์๋๋ค์ด ๋ช๊ฐ ์๋ค.
-
Math.ceil : ์์์ ์ดํ ์ฌ๋ฆผ
-
Math.floor : ์์์ ์ดํ ๋ฒ๋ฆผ
-
Math.round : ์์์ ์ดํ ๋ฐ์ฌ๋ฆผ
-
Math.randon() : 0 ์ด์ 1 ๋ฏธ๋ง์ ๋ถ๋์์์ ์ซ์๋ฅผ ๋ฌด์์๋ก ๋ฐํํ๋ค.
Math.random(); // ๊ธฐ๋ณธ ๋๋ค ๋ฉ์๋ ํธ์ถ, 0.9569793562433155 (Math.random() * 10).toFixed(); // 0 ~ 10 ๋๋ค ์ ๋ฆฌํด(๋ฌธ์์ด) Math.round((Math.random() * 10)); // 0 ~ 10 ๋๋ค ์ ๋ฆฌํด(number)
level3 ๊ณผ์ ์์๋ ์กฐ๋ฅผ ๋ฌด์์๋ก ์ง๋ด์ผํ๋๋ฐ, ์ฒ์์๋ ์ง๊ธ ์ง ์ฝ๋๋ ๋ค๋ฅด๊ฒ ๊ตฌํ์ ํ๋ ค๊ณ ํ๋ค.
OB ์ธ์์ ๋ถ๋ฆฌํด๋์ ๋ฐฐ์ด OBList์ ๋๊ณ , ์๋ก์ด ๋ฐฐ์ด NewOBList๋ฅผ ํ๋ ๋ ์ ์ธ ํ๋ค,
randomํจ์๋ฅผ ์ฌ์ฉํด์ ์์์ index๋ฅผ ๊ตฌํด OBList์์ ํด๋น ์ธ๋ฑ์ค์ ์์๋ฅผ sliceํ์ฌ NewOBList์ push ํ๋ ๋ฐฉ์ ์ด์๋ค.
๊ทธ๋ฐ๋ฐ ๋ฌธ๋, ์๋ ๊ทธ๋ฅ ์๋ ์๋ ๋ฐฐ์ด์ ์์ด๋ฒ๋ฆฌ๋ฉด ์๋๋? ํ๋ ์๊ฐ์ด ๋ค์ด ๋ฐฉ๋ฒ์ด ์๋ ๊ตฌ๊ธ๋ง์ ํด๋ณด์๋ค.
๊ทธ๋ ๊ฒ ๋ฐ๊ฒฌํ๊ฒ ๋ฐ๋ก, sort()๋ฅผ ํ์ฉํ ๋ฐฉ์์ด์๋ค.
function shuffle(array) {
array.sort(() => Math.random() - 0.5);
}
let arr = [1, 2, 3];
shuffle(arr);
sort()๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฐฐ์ด์ ์์๋ฅผ ์ด๋ ต์ง ์๊ฒ ์์ ์ ์๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก sort()
ํจ์๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ฐฐ์ด ์์๋ฅผ ์ฐจ๋ก๋ก ๋ฐ๋ณตํด์ ๋น๊ตํด์ ๋ฌด์์ด ํฐ์ง ์์์ง๋ฅผ ํ์ธํ์ฌ ์ํ
ํ๋๋ฐ,
Math.random() - 0.5
๋ ์์์ ์์ ๋ ์ค ํ๋๋ฅผ ๊ฒฐ๊ณผ๋ก ์ถ๋ ฅํ๊ธฐ ๋๋ฌธ์, ํด๋น ์ ๋ ฌํจ์๋ ๋ฌด์์๋ก ์์๋ฅผ ์ ๋ ฌํ๊ฒ ๋๋ค.
ํ์ฉ๋ ๊ฐ๋จํ๊ณ ์ฝ๋๋ ์งง์ง๋ง, ๋๋ ์ด ๋ฐฉ๋ฒ์ ์ฌ์ฉํ์ง ์์๋ค.
๊ทธ ์ด์ ๋ ??!
๋ชจ๋ ์๋ฐ ์คํฌ๋ฆฝํธ ํํ ๋ฆฌ์ผ์ ๋์์๋ ์ค๋ช
์ ๋ณด๋ฉด, sort() ๋ฉ์๋๋ ์
ํ์ ์ํด ๋ง๋ค์ด์ง ๋ฉ์๋๊ฐ ์๋๊ธฐ ๋๋ฌธ์ ๊ท ์ผํ ๋น๋๋ก ๋๋ค์ ๋ ฌ์ ์ํฌ์ ์๋ค๊ณ ํ๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์ด๋ฅผ ๊ณ ๋ คํ์ฌ, ๋ณด๋ค ๊ท ์ผํ ๋น๋์๋ก ๋๋คํ ๋ฐฐ์ด์ ์ป์ด๋ด๊ธฐ์ํด ํผ์
์์ด์ธ ์
ํ ์๊ณ ๋ฆฌ์ฆ (Fisher-Yates Shuffle)
์ฌ์ฉ์ ์ถ์ฒํ๊ณ ์๋ค.
ํผ์ ์์ด์ธ ์ ํ ์๊ณ ๋ฆฌ์ฆ (Fisher-Yates Shuffle)์ ์ฌ์ฉํ์ฌ ๋ฐฐ์ด ์์ ๋ฌด์์๋ก ์๊ธฐ
// ๋ฆฌ์คํธ์ ์์ ์์๋ค์ ๋ฌด์์๋ก ๋ฐ๊พธ์ด์ฃผ๋ ํจ์ --> ํผ์
-์์ด์ธ ์
ํ(Fisher-Yates shuffle)
function shuffle(array) {
for (let index = array.length - 1; index > 0; index--) {
// ๋ฌด์์ index ๊ฐ์ ๋ง๋ ๋ค. (0 ์ด์์ ๋ฐฐ์ด ๊ธธ์ด ๊ฐ)
const randomPosition = Math.floor(Math.random() * (index + 1));
// ์์๋ก ์๋ณธ ๊ฐ์ ์ ์ฅํ๊ณ , randomPosition์ ์ฌ์ฉํด ๋ฐฐ์ด ์์๋ฅผ ์๋๋ค.
const temporary = array[index];
array[index] = array[randomPosition];
array[randomPosition] = temporary;
}
์ด๋ฆ์ ๊ทธ๋ด๋ฏ ํ์ง๋ง, ์ฝ๋๋ฅผ ๋ณด๋ฉด ์ ์ ์๋ฏ ๊ณผ์ ์ ๊ฐ๋จํ๋ค.
๋ฐฐ์ด์ ๋ ์์๋ถํฐ ์์ํด, ํ๋์ฉ ์์ผ๋ก ๋์๊ฐ๋ฉด์ randomํจ์๋ก ๊ตฌํํ ๋ฌด์์ ์ธ๋ฑ์ค์ ํด๋น ์ธ๋ฑ์ค์ ์์๋ฅผ ๋ฐ๊ฟ์น๊ธฐ ํ๋๊ฒ์ด๋ค.
sort() ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๋นํด ์ฑ๋ฅ์ ์ผ๋ก๋ ๋ ํจ์จ์ ์ด๋ผ๊ณ ํ๋๋ฐ..
์ฌ์ค ๋๋ ๋ฌด์ง์ฑ ์ฝ๋ฉ์ ํ์๊ธฐ ๋๋ฌธ์,, ๊ณผ์ฐ ์ด๋ฐ ์ฑ๋ฅ์ ํจ์จ์ ์ป์์์ง๋ ์๋ฌธ์ด๋ค .. ใ
(์ฝ๋๋ฆฌ๋ทฐํด์ฃผ์ธ์ฌ~)
๋๋ JS ์ธ์ด์ ์์ง ๋ง์ด ๋ฏ์ ํธ์ธ๋ฐ, ์ฌ์ฉํ๋ค๋ณด๋ ์ฝ์์ ํตํด ๊ฐ์ ์
๋ ฅ๋ฐ๋๋ฐ์ ๊ทธ๋ ๊ฒ ์น์ ํ ์ธ์ด๊ฐ ์๋ ๊ฒ ๊ฐ๋ค๊ณ ๋๊ผ๋ค..
level3 ํ์ด๋ฅผ ํ๋ฉด์ ์กฐ์ ์ต๋์ธ์์ ์
๋ ฅ๋ฐ์ ์กฐ๋ฅผ ์ง๊ณ ์ถ์๊ธฐ์, ์ฝ์์ ํตํด ๊ฐ์ ์
๋ ฅ๋ฐ๋ ๋ฒ์ ์ฐพ์๋ณด๊ฒ ๋์๋ค.
์ฝ๋์ ์ฃผ์์ ๋ณด๋ฉด ์ ์ ์๊ฒ ์ง๋ง, ๋๋ readline์ด๋ผ๋ ๋ด์ฅ ๋ชจ๋์ ์ฌ์ฉํ๋ค.
rl.on("line", function (line) {
teamMemberCount = Number(line);
buildTeam();
rl.close();
});
์ฌ๊ธฐ์ ์ค์ํ๊ฑด line ๊ณผ close() ์ด๋ค.
line์ ํ ์ค์ด ์
๋ ฅ๋๋ ์ด๋ฒคํธ, close๋ ์
๋ ฅ์ด ๋๋ฌ์์ ์๋ ค์ฃผ๋ ๋ช
๋ น์ด์ด๋ค.
readline๋ชจ๋์ rl๊ฐ์ฒด๋ event-driven ๊ฐ์ฒด์ด๊ธฐ ๋๋ฌธ์ ๊ฐ์ฅ ๋ง์ง๋ง์ rl.close(); ๋ฅผ ํตํด ์
๋ ฅ์ด ๋๋ฌ์์ ์๋ ค์ฃผ์ด์ผํ๋ค.
๋ํ ์ฌ์ฉ์์๊ฒ ๊ฐ์ ์
๋ ฅ ๋ฐ์ ๋ค์ buildTeam() ํจ์๋ฅผ ์คํํ ์ ์๋๋ก rl.on() ์์์ ํด๋น ํจ์๊ฐ ์คํ๋๋๋ก ํด์ฃผ์๋ค.
์กฐ๋ฅผ ์ง๋ ํ๋ก๊ทธ๋จ์, ์
๋ ฅ๋ฐ์ ์๊ฐ ์์ด์ผ๋ง ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ ๋ก์ง์ ์์๊ฐ ๋์ฑ ์ค์ํ๋ค!
ํ์ด์ฌ ๊ฐ์ ์ธ์ด์๋ค๋ฉด ์๋ฌด ๊ฑฑ์ ์์ด ์์๋๋ก ์ฃผ๋ฅด๋ฅต ์ฝ๋ฉํ๋ฉด ๋๊ฒ ์ง๋ง,
์ฐ๋ฆฌ๋ ๊ณจ๋๋ฆฌ๋ JS๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์!
Js์ event-driven ๋ผ๋ ํน์ง์ ๋งค๋ฒ ์ผ๋์ ๋๊ณ ์ฝ๋๋ฅผ ์ง์ผํ๋ค ใ
-
๋ฐฐ์ด ์ ํํ๊ธฐ
sort()์ ์ ํ ์๊ณ ๋ฆฌ์ฆ ์ค๋ช
sort()์ ์ ํ ์๊ณ ๋ฆฌ์ฆ ์ค๋ช 2
sortํจ์๋ฅผ ํ์ฉํ ๋ฐฐ์ด ์ ํ์ ์๋ฆฌ ์ค๋ช ! -
sort() ํจ์
sort()์ ์๋ฆฌ -
์ฝ์์ฐฝ์์ ๊ฐ ์ ๋ ฅ๋ฐ๊ธฐ
readline ๋ชจ๋์ ์ฌ์ฉํด ๊ฐ ์ ๋ ฅ๋ฐ๊ธฐ