* { box-sizing : border-box};
*
์ ํ์ ์ฌ์ฉ์ ์ค์ฌ์ผํ๋ค๊ณ ์๊ณ ์๋๋ฐ, ์๊ฐ ์ค์ธ ์ ๋ฐ๋ฏธ ๊ฐ์์์ ํญ์* { box-sizing : border-box};
ํํ๋ก ์ฌ์ฉํ๋ ๊ฒ์ ๋ํด ๊ถ๊ธํ์๋ค.
- ์กด๋์๊ฒ ์ง๋ฌธํ ๊ฒฐ๊ณผ
- next app ์ ํ ํ๋ฉด ๊ธฐ๋ณธ CSS์ด๋ค.
- vw, vh๋ฅผ ๋ง์ด ์ฐ๋ค๋ณด๋ ๋ง์ด ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ด๋ค.
*
๋ ํ ๋ฒ ์ผ์ผ๋ ์์ ํ๊ฑฐ๋ค^^
=> ์ ๋ ์ฌ์ฉ ์์ฒด๋ฅผ ํ๋ฉด ์๋๋ค๊ณ ์ดํดํด๋ฒ๋ ธ๋ค์.box-sizing
์ ๊ฒฝ์ฐ ์คํ๋ ค ์ผ๋ถ ์์์๋ง ์ฐ์ด๋ฉด ๋ ํท๊ฐ๋ฆด ์ ์์ด์ ์ ์ฒด๋ก ๋ฃ๋ ๊ฒ์ด ๋ ๋ซ๋ค๋ ํ์ด ๋ง๋ค.- ์ ํ๋ฆฌ์ผ์ด์ ์ด MFA (Micro Frontend Architecture)์ด๋ผ๋ฉด ์ ๋ ๊ฒ ํ๋ฉด ์๋ ์๋ ์๋ค.
=> ์ค์ ์ ๊ฐ
* { box-sizing : border-box};
์ ์ข์ํ๋๋ฐ์. ๋ง์นจ ์กด๋ ์ฝ๋์ ๋ณด์ฌ์ ์ง๋ฌธ์ ํด๋ณด์์ต๋๋ค. ๊ฐ์ด-
* MFA (Micro Frontend Architecture) ๋ด์ฉ ์ฐพ์๋ณด๊ธฐ
class Node {
constructor(data) {
this.data = data;
this.next = null;
}
}
class LinkedList {
constructor() {
let init = new Node("init");
this.head = init;
this.tail = init;
this.ํ์ฌ๋
ธ๋ = undefined;
this.๋ฐ์ดํฐ์ = 0;
}
// ํ๋จ์ ์์ฑํ๋ ๋ด์ฉ
// constructor ์๋๋ก ์ด๋
get fullData() {
let ์ํ์ฉํ์ฌ๋
ธ๋ = this.head;
์ํ์ฉํ์ฌ๋
ธ๋ = ์ํ์ฉํ์ฌ๋
ธ๋.next;
let s = "";
for (let i = 0; i < this.๋ฐ์ดํฐ์; i++) {
s += `${์ํ์ฉํ์ฌ๋
ธ๋.data},`;
์ํ์ฉํ์ฌ๋
ธ๋ = ์ํ์ฉํ์ฌ๋
ธ๋.next;
}
// JSON.parse : ๋ฌธ์์ด์ ๋ฐฐ์ด๋ก ๋ฐ๊ฟ์ค๋ค
return JSON.parse(`[${s.slice(0, -1)}]`);
}
length() {
return this.๋ฐ์ดํฐ์;
}
append(data) {
let ์๋ก์ด๋
ธ๋ = new Node(data);
// ๋ง์ง๋ง ๊ฐ์ด null์์ ์๋ก์ด ๋
ธ๋๊ฐ ๋จ
this.tail.next = ์๋ก์ด๋
ธ๋;
// ๋ง์ง๋ง ๋
ธ๋๋ ์๋ก์ด ๋
ธ๋๊ฐ ๋จ
this.tail = ์๋ก์ด๋
ธ๋;
this.๋ฐ์ดํฐ์ += 1;
}
toString() {
let ์ํ์ฉํ์ฌ๋
ธ๋ = this.head;
์ํ์ฉํ์ฌ๋
ธ๋ = ์ํ์ฉํ์ฌ๋
ธ๋.next;
let s = "";
for (let i = 0; i < this.๋ฐ์ดํฐ์; i++) {
s += `${์ํ์ฉํ์ฌ๋
ธ๋.data},`;
์ํ์ฉํ์ฌ๋
ธ๋ = ์ํ์ฉํ์ฌ๋
ธ๋.next;
}
// ๋งจ ๋ง์ง๋ง์ ์ฝค๋ง์ ๋์ด์ฐ๊ธฐ๊ฐ ์์ผ๋ฏ๋ก -1 ์์ฑ
return s.slice(0, -1);
}
insert(index, data) {
let ์ํ์ฉํ์ฌ๋
ธ๋ = this.head;
์ํ์ฉํ์ฌ๋
ธ๋ = ์ํ์ฉํ์ฌ๋
ธ๋.next;
for (let i = 0; i < index - 1; i++) {
์ํ์ฉํ์ฌ๋
ธ๋ = ์ํ์ฉํ์ฌ๋
ธ๋.next;
}
let ์๋ก์ด๋
ธ๋ = new Node(data);
// ๋ง์ง๋ง ๋ฐ์ดํฐ ์ง์์ง
์๋ก์ด๋
ธ๋.next = ์ํ์ฉํ์ฌ๋
ธ๋.next;
์ํ์ฉํ์ฌ๋
ธ๋.next = ์๋ก์ด๋
ธ๋;
// ๋ด๊ฐ ๋์ณค๋ ๋ถ๋ถ
// ๋ฐ์ดํฐ์ ์ถ๊ฐํ๋ฉด ๋ง์ง๋ง ๋ฐ์ดํฐ๊ฐ ์ง์์ง์ง ์๊ณ ๋ฐ์ดํฐ ์ถ๊ฐ
this.๋ฐ์ดํฐ์ += 1;
}
}
// console
l = new LinkedList();
l.append(1);
l.append(2);
l.append(3);
l.append(10);
l.append(20);
l.append(30);
l.length();
l.insert(3, 100);
l.length();
// fullData ๋ค์ ๊ดํธ์์ด ์คํ
l.fullData; // (7) [1, 2, 3, 100, 10, 20, 30]
// ์ง์ ํด๋ณด๊ธฐ
let ์ = [199, 22, 33, 12, 32, 64, 72, 222, 233];
let ํ = [];
let ์ = [199, 22, 33, 32, 64, 72, 222, 233]; // ์ํํ๋ฉฐ ์ต์๊ฐ(12)๋ฅผ ์ฐพ์ ํ์ ๋ฃ์ด์ค
let ํ = [12]; // ์ํ ์ํจ
let ์ = [199, 33, 32, 64, 72, 222, 233];
let ํ = [12, 22];
let ์ = [199, 33, 64, 72, 222, 233];
let ํ = [12, 22, 32];
// ์ฝ๋ ์์
let ์
๋ ฅ๊ฐ = [199, 22, 33, 12, 32, 64, 72, 222, 233];
let ์ ๋ ฌ๋๋ฐฐ์ด = [];
let ๊ธธ์ด = ์
๋ ฅ๊ฐ.length;
// ์ฃผ์์ฌํญ : pop์ ํ๋ฉด length๊ฐ ์ค์ด๋ ๋ค
// for (let i; i < ์
๋ ฅ๊ฐ.length; i++) {
// console.log(์
๋ ฅ๊ฐ.pop());
// console.log(i);
// }
for (let i = 0; i < ๊ธธ์ด; i++) {
let ์ต์๊ฐ = Math.min(...์
๋ ฅ๊ฐ);
์ ๋ ฌ๋๋ฐฐ์ด.push(์ต์๊ฐ);
์
๋ ฅ๊ฐ.splice(์
๋ ฅ๊ฐ.indexOf(์ต์๊ฐ), 1);
}
// ์์ for๋ฌธ๊ณผ ๊ฐ์ ๋์
// !! = ๋ถ์ ์ ๋ถ์
// while (!!์
๋ ฅ๊ฐ.toString()) {
// let ์ต์๊ฐ = Math.min(...์
๋ ฅ๊ฐ);
// ์ ๋ ฌ๋๋ฐฐ์ด.push(์ต์๊ฐ);
// ์
๋ ฅ๊ฐ.splice(์
๋ ฅ๊ฐ.indexOf(์ต์๊ฐ), 1);
// }
console.log(์ ๋ ฌ๋๋ฐฐ์ด); // (9) [12, 22, 32, 33, 64, 72, 199, 222, 233]
// ์ ํ์ ๋ ฌ - ๋ฉ์๋ ์ต์ํ
// ์ ๋๋ก ํ๋ ค๋ฉด ์๋ฆฌ ๋ฐ๊พธ๋ ๊ฒ๊น์ง
const arr = [199, 22, 33, 12, 32, 64, 72, 222, 233];
function selectionSort(arr) {
for (let i = 0; i < arr.length; i++) {
let min_index = i;
for (let j = i + 1; j < arr.length; j++) {
if (arr[min_index] > arr[j]) {
min_index = j;
}
}
// ์๋ฆฌ๋ฐ๊ฟ
let temp = arr[min_index];
arr[min_index] = arr[i];
arr[i] = temp;
}
return arr;
}
console.log(selectionSort(arr)); // (9) [12, 22, 32, 33, 64, 72, 199, 222, 233]
// ์ง์ ํด๋ณด๊ธฐ
let ์ = [199, 22, 33, 12, 32, 64, 72, 222, 233];
let ํ = [];
let ์ = [22, 33, 12, 32, 64, 72, 222, 233]; // ์ํ๋ฅผ ํ์ง ์๊ณ ์ฒซ ๋ฒ์งธ ์์๋ฅผ ๋จผ์ ์ฝ์
let ํ = [199]; // ์ํํจ
let ์ = [33, 12, 32, 64, 72, 222, 233];
let ํ = [22, 199];
// ์ฝ๋ ์์
let ์
๋ ฅ๊ฐ = [199, 22, 33, 12, 32, 64, 72, 222, 233];
let ์ ๋ ฌ๋๋ฐฐ์ด = [];
let ๋ฐฐ์ด์๊ธธ์ด = ์
๋ ฅ๊ฐ.length;
function ์ฝ์
๊ฐ์ด๋ค์ด๊ฐ์ธ๋ฑ์ค(์ ๋ ฌ๋๋ฐฐ์ด, ์ฝ์
๊ฐ) {
for (const i in ์ ๋ ฌ๋๋ฐฐ์ด) {
if (์ฝ์
๊ฐ < ์ ๋ ฌ๋๋ฐฐ์ด[i]) {
return 1;
}
}
return ์ ๋ ฌ๋๋ฐฐ์ด.length;
}
for (let i = 0; i < ๋ฐฐ์ด์๊ธธ์ด; i++) {
let ์ฝ์
๊ฐ = ์
๋ ฅ๊ฐ.shift();
let ์ธ๋ฑ์ค = ์ฝ์
๊ฐ์ด๋ค์ด๊ฐ์ธ๋ฑ์ค(์ ๋ ฌ๋๋ฐฐ์ด, ์ฝ์
๊ฐ);
์ ๋ ฌ๋๋ฐฐ์ด.splice(์ธ๋ฑ์ค, 0, ์ฝ์
๊ฐ);
console.log(
`์ธ๋ฑ์ค: ${์ธ๋ฑ์ค}\n์ฝ์
๊ฐ: ${์ฝ์
๊ฐ}\n์ ๋ ฌ๋๋ฐฐ์ด: ${์ ๋ ฌ๋๋ฐฐ์ด}`
);
}
// let ์
๋ ฅ๊ฐ = [5, 10, 66, 77, 54, 32, 11, 15];
// let ์ ๋ ฌ๋๋ฐฐ์ด = [];
// ๋ถํ (์ดํด๋ฅผ ๋๊ธฐ ์ํด 8๊ฐ๋ก ์กฐ์ )
[5, 10, 66, 77], [54, 32, 11, 15]
[5, 10], [66, 77], [54, 32], [11, 15]
[5], [10], [66], [77], [54], [32], [11], [15]
//์ ๋ณต(0๋ฒ์งธ๋ผ๋ฆฌ ๋น๊ต!)
[5, 10], [66, 77], [32, 54], [11, 15]
[5, 10, 66, 77], [11, 15, 32, 54]
[5, 10, 11, 15, 32, 54, 66, 77]
let ์
๋ ฅ๊ฐ = [5, 10, 66, 77, 54, 32, 11, 15];
let ์ ๋ ฌ๋๋ฐฐ์ด = [];
function ๋ณํฉ์ ๋ ฌ(์
๋ ฅ๋ฐฐ์ด) {
// ๋ถํ
let ์
๋ ฅ๋ฐฐ์ด์๊ธธ์ด = ์
๋ ฅ๋ฐฐ์ด.length;
let ๊ฒฐ๊ณผ๊ฐ = [];
if (์
๋ ฅ๋ฐฐ์ด์๊ธธ์ด <= 1) {
// ์ฌ๊ทํจ์์ด๊ธฐ ๋๋ฌธ์ ์ข
๋ฃ์กฐ๊ฑด์ return์ผ๋ก ๋ฃ์ด์ค ๊ฒ
return ์
๋ ฅ๋ฐฐ์ด;
}
// ์ค๊ฐ๊ฐ : ๋๋ก ๋๋๊ธฐ ์ํด์
let ์ค๊ฐ๊ฐ = parseInt(์
๋ ฅ๋ฐฐ์ด์๊ธธ์ด / 2);
// ๋๋ก ๋๋๊ณ ๋ ๋ณํฉ์ ๋ ฌ => ์ฌ๊ท
let ๊ทธ๋ฃนํ๋ = ๋ณํฉ์ ๋ ฌ(์
๋ ฅ๋ฐฐ์ด.slice(0, ์ค๊ฐ๊ฐ));
let ๊ทธ๋ฃน๋ = ๋ณํฉ์ ๋ ฌ(์
๋ ฅ๋ฐฐ์ด.slice(์ค๊ฐ๊ฐ));
while (๊ทธ๋ฃนํ๋.length != 0 && ๊ทธ๋ฃน๋.length != 0) {
if (๊ทธ๋ฃนํ๋[0] < ๊ทธ๋ฃน๋[0]) {
๊ฒฐ๊ณผ๊ฐ.push(๊ทธ๋ฃนํ๋.shift());
} else {
๊ฒฐ๊ณผ๊ฐ.push(๊ทธ๋ฃน๋.shift());
}
}
// ์ ๋ณต
// ๋ฃ๊ณ ๋จ์ ๊ฐ๋ค์ ์ํด
while (๊ทธ๋ฃนํ๋.length != 0) {
๊ฒฐ๊ณผ๊ฐ.push(๊ทธ๋ฃนํ๋.shift());
}
while (๊ทธ๋ฃน๋.length != 0) {
๊ฒฐ๊ณผ๊ฐ.push(๊ทธ๋ฃน๋.shift());
}
// ์ด ๊ฒฐ๊ณผ๊ฐ์ ๋ค์ ๋ณํฉ์ ๋ ฌ๋ก ๋ค์ด๊ฐ๋ค
return ๊ฒฐ๊ณผ๊ฐ;
}
console.log(๋ณํฉ์ ๋ ฌ(์
๋ ฅ๊ฐ)); // (8) [5, 10, 11, 15, 32, 54, 66, 77]
// ํผ๋ด๊ฐ(pivot)์ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌ(ํผ๋ด๊ฐ์ ์ฒ์๊ฐ, ์ค๊ฐ๊ฐ, ๋ง์ง๋ง ๊ฐ)
// ์ค๋ฌด์์๋ worst์ผ ๊ฒฝ์ฐ๋ฅผ ํผํ๊ธฐ ์ํด ํผ๋ด์ ๋๋คํ๊ฒ ์ฃผ๋ ๊ฒฝ์ฐ๋, ํผ๋ด์ 2๊ฐ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๋ ์์.
let ์
๋ ฅ๊ฐ = [66, 77, 54, 32, 10, 5, 11, 15];
//ํผ๋ด๊ฐ : 66
[54, 32, 10, 5, 11, 15] + [66] + [77]
//ํผ๋ด๊ฐ : 54(66๊ณผ 77์ ๊ฐ์ด ํ ๊ฐ์ด๊ธฐ ๋๋ฌธ์ ๋์ด์ ์ฌ๊ท๋ก ํธ์ถ๋์ง ์์.)
[32, 10, 5, 11, 15], [54] + [66] + [77]
//ํผ๋ด๊ฐ : 32
[10, 5, 11, 15], [32] + [54] + [66] + [77]
//ํผ๋ด๊ฐ : 10
[5] + [10], [11, 15] + [32] + [54] + [66] + [77]
//ํผ๋ด๊ฐ : 11
[5] + [10] + [11] + [15] + [32] + [54] + [66] + [77]
// ์ฝ๋ ์์
let ์
๋ ฅ๊ฐ = [66, 77, 54, 32, 10, 5, 11, 15];
function ํต์ ๋ ฌ(์
๋ ฅ๋ฐฐ์ด) {
let ์
๋ ฅ๋ฐฐ์ด์๊ธธ์ด = ์
๋ ฅ๋ฐฐ์ด.length;
if (์
๋ ฅ๋ฐฐ์ด์๊ธธ์ด <= 1) {
return ์
๋ ฅ๋ฐฐ์ด;
}
// ํผ๋ฒ๊ฐ : ๊ธฐ์ค์
let ํผ๋ฒ๊ฐ = [์
๋ ฅ๋ฐฐ์ด.shift()];
let ๊ทธ๋ฃนํ๋ = [];
let ๊ทธ๋ฃน๋ = [];
for(let i in ์
๋ ฅ๋ฐฐ์ด) {
if (์
๋ ฅ๋ฐฐ์ด[i] < ํผ๋ฒ๊ฐ) {
๊ทธ๋ฃนํ๋.push([์
๋ ฅ๋ฐฐ์ด[i]]);
} else {
๊ทธ๋ฃน๋.push([์
๋ ฅ๋ฐฐ์ด[i]]);
}
}
console.log(`๊ทธ๋ฃนํ๋ : ${๊ทธ๋ฃนํ๋}\n๊ทธ๋ฃน๋ : ${๊ทธ๋ฃน๋}\nํผ๋ฒ๊ฐ : ${ํผ๋ฒ๊ฐ}`);
return ํต์ ๋ ฌ(๊ทธ๋ฃนํ๋).concat(ํผ๋ฒ๊ฐ, ํต์ ๋ ฌ(๊ทธ๋ฃน๋));
}
console.log(ํต์ ๋ ฌ(์
๋ ฅ๊ฐ));