์ค๋์ ์๊ณ ๋ฆฌ์ฆ์ ์ฒ์ ๋๊ฐ ๋ ์ด์๋ค. ์ด๋ ค์ด ๋ฌธ์ ๋ฅผ ํ์ง ์์์ง๋ง, C++๋ ์๋๊ณ ๊ธฐ๋ณธ C๋ฅผ ์ฐ๋ ๋์๊ฒ๋ js์ ์๋ ์๋ฆ๋ค์ด ๋นํธ์ธ ํจ์๋ค์ ์ฐ๋ ๋ฒ์ ๋ฐฐ์ฐ๋ ์ข์ ๊ธฐํ์๋ค! ํ์ด์ฌ์๋ ๋์ฒด๋ก ์์ผ๋๊น ์ฐพ์๋ณด๊ณ ํ๋ฉด ๋ ๊ฒ ๊ฐ๋ค. Swift๋ก๋... ํ์ด์ผ์ง...
์ปดํจํฐ๊ฐ ์ด๋ค ์ผ์ ํ๊ธฐ ์ํด์ ์๋ ค์ค์ผ ํ๋ ์์, ์ ์ฐจ
<์ธก์ ๋ฐฉ๋ฒ>
1. ์๊ฐ ๋ณต์ก๋
2. ๊ณ์ฐ ๋ณต์ก๋ - Big O
3. ๊ณต๊ฐ ๋ณต์ก๋
coding test tipsโจ
- ํ๋ก๊ทธ๋๋จธ์ค, ๊ตฌ๋ฆ EDU ๊ฐ์ ํ๋ซํผ์ ์ต์ํด์ง๊ธฐ.
- ์ฌ์ฉ ๊ฐ๋ฅํ ์ธ์ด, ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฏธ๋ฆฌ ํ์ธํ๊ธฐ.
- ์ฝ๋ ์ค๋คํ (ํธ๋ฆฌ, ๊ฒ์, ์์ด, ์กฐํฉ, ์ต๋จ๊ฒฝ๋ก), Cheat Shetet์ A4 ์ฉ์ง๋ ๋ฏธ๋ฆฌ ์ค๋น
- ์ ์ฉํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฏธ๋ฆฌ ์ ๋ฆฌํด๋๊ธฐ
- ์์ธ์ฒ๋ฆฌ ๊ผฌ์ฅ!
ํต์ฌ ์ฝ๋
// ์ ์ฒ์ฐ๋ฐ ๋ฐฐ์ด์ ์๋ ๊ฒ์ ๋ฌธ์์ด๋ก ๋ค ํฉ์ณ๋๊ณ // 8์ ๊ธฐ์ค์ผ๋ก ๋๋๋ฉด 8๊ฐ์ + 1 ๋งํผ ๋๋ ์ง๋๊น // -1 ํ๋ฉด 8์ ๊ฐฏ์๊ฐ ๋์จ๋ค. Array(100).fill(1).map((value, index) => value + index + '').split('8').length - 1;
ํต์ฌ ์ฝ๋ - 1๋ฒ์งธ ๋ฐฉ๋ฒ
// ์๋ก์ด ๋ฐฐ์ด์ ์ธ์ ์ ๋ค์ ๊ฑฐ๋ฆฌ๋ฅผ ๋ฃ๊ณ for(let i = 0; i < s.length - 1; i++) { arr.push(s[i+1] - s[i]); } // ๊ฑฐ๋ฆฌ ์ต์ ๊ฐ์ ํด๋นํ๋ index๋ฅผ ์ฐพ์์ ํด๋น ์ ๊ณผ ๊ทธ ๋ค์ ์ ์ถ๋ ฅ. let result = arr.indexOf(Math.min(...arr)); console.log(`(${s[result]}, ${s[result + 1]})`);
ํต์ฌ ์ฝ๋ - 2๋ฒ์งธ ๋ฐฉ๋ฒ
// ๋๊ฐ์ฉ array์ ๋ฃ์ด๋๊ณ ์ด์ฉ const zip = (a,b) => a.map((value, index) => [value, b[index]]); let pairs = zip(s.slice(0, s.length-1), s.slice(1)); // ๊ทธ๋ฆฌ๊ณ ์ ๋ ฌ ๋ฉ์๋๋ฅผ ์ด์ฉํด์ ์ ๋ ฌ. // ๋์ ๋ฌธ์ ์ํฉ์ ๋ง์ถฐ์ ์ฐจ๋ฅผ ๊ฐ์ง๊ณ ํ๋ค. function compare(a, b) { if( a[1] - a[0] < b[1] - b[0] ) { return -1; } if ( a[1] - a[0] > b[1] - b[0] ) { return 1; } return 0; } pairs.sort(compare); console.log(pairs[0]);
Number.MAX_SAFE_INTEGER
๋ฃ์.์๋ง ์ด๋ ค์์ด์ ์๋ก๋ง ๋ฃ์๋ค ๋บ๋ค ํ ์ ์๋ ๊ตฌ์กฐ
class Stack { constructor() { this.arr = []; } push(data) { this.arr.push(data); } pop(index = this.arr.length - 1) { // ์๋๋ index ์์ง๋ง ๋ฃ์ด์ ๊ตฌํํด ๋ด. if (index === this.arr.length - 1) { return this.arr.pop(); } let result = this.arr[index]; this.arr = [...this.arr.slice(0, index)] + [...this.arr.slice(index + 1)]; return result; } empty() { return (this.arr.length == 0) ? true : false; } top() { return this.arr[this.arr.length - 1]; } bottom() { return this.arr[0]; } }
let s = new Stack();
s.push(10);
s.pop();
s.top();
s.bottom();
s.empty();
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; } get fullData() { let currentNode = this.head; currentNode = currentNode.next; let s = '' for (let i = 0; i < this.๋ฐ์ดํฐ์; i++) { s += `${currentNode.data}, `; currentNode = currentNode.next; } } length() { return this.๋ฐ์ดํฐ์; } append(data) { let newNode = new Node(data); // ๋ง์ง๋ง ๊ฐ์ ์๋ก์ด ๋ ธ๋ this.tail.next = newNode; // ๋ง์ง๋ง ๋ ธ๋๋ ์๋ก์ด ๋ ธ๋ this.tail = newNode; this.๋ฐ์ดํฐ์ += 1; } toString() { let currentNode = this.head; currentNode = currentNode.next; let s = []; while (currentNode) { s.push(currentNode.data); currentNode = currentNode.next; } return `${s.join(' -> ')}` } insert(index, data) { let currentNode = this.head; currentNode = currentNode.next; for(let i = 0; i < index; i++) { currentNode = currentNode.next; } let newNode = newNode(data); newNode.next = currentNode.next; currentNode.next = newNode; this.๋ฐ์ดํฐ์ += 1; } }
+ ์ง๊ธ ๋ค์ด์๋ณด๋๊น ํด๋ก ์คํฐ๋ ํด์ผ์ง... ์์ ๋ณต์ต๋ ํด์ผ์ง.. ์ฌ์ง์ด ์ง๋์ฃผ์๋ ๋ฉด์ ๊ฐ๊ณ ํ์๊ฐ๊ณ .. ๋๋ฌด ์ ์ ์๋ค. ๊ทธ๋ฌ๋ค๋ณด๋ ๋ฅ๋ค์ด๋ธ๊ฐ ๋จผ์ ๋์ค๋๋ค.... ์ด์ ๋ฉด์ ์ ์์ผ๋๊น ์์ ๋ณต์ต -> ํด๋ก -> ๋ฅ๋ค์ด๋ธ ์์ผ๋ก ๋ฌ๋ ค๋ณด์๊ณ !!!