์ธ๋„ค์ผ 8. ๋ฆฌ๋” (Leader) Codility Lesson ํ•œ๊ตญ์–ด ์ •๋ฆฌ๋ณธ (JavaScript ver.) ๋ฆฌ๋”(Leader)๋ž€?์ฃผ์–ด์ง„ ์ˆ˜์—ด A = [aโ‚€, aโ‚, ..., aโ‚™โ‚‹โ‚] ์—์„œ ๋ฆฌ๋”(Leader) ๋Š” ์ˆ˜์—ด์˜ ์›์†Œ ์ค‘ ์ ˆ๋ฐ˜์„ ์ดˆ๊ณผํ•˜์—ฌ ๋“ฑ์žฅํ•˜๋Š” ์›์†Œ ๋ฅผ ์˜๋ฏธํ•œ๋‹ค.์˜ˆ๋ฅผ ๋“ค์–ด, ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ˆ˜์—ด์ด ์žˆ์„ ๋•Œ:A = [6, 8, 4, 6, 8, 6, 6];์œ„ ์ˆ˜์—ด์—์„œ 6์€ 4๋ฒˆ ๋“ฑ์žฅํ•˜์—ฌ n/2 = 3.5 ๋ณด๋‹ค ๋งŽ์ด ๋“ฑ์žฅํ•˜๋ฏ€๋กœ ๋ฆฌ๋”๊ฐ€ ๋œ๋‹ค. ๋ฆฌ๋”๋Š” ์ตœ๋Œ€ ํ•˜๋‚˜๋งŒ ์กด์žฌ ํ•œ๋‹ค.1. O(nยฒ) ์‹œ๊ฐ„ ๋ณต์žก๋„์˜ ๋‹จ์ˆœํ•œ ๋ฐฉ๋ฒ•๊ฐ ์›์†Œ์˜ ๋“ฑ์žฅ ํšŸ์ˆ˜๋ฅผ ์„ธ์–ด ๋ฆฌ๋”๋ฅผ ์ฐพ๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.JavaScript ์ฝ”๋“œ:function slowLeader(A) { let n = A.length; let leader = -1; for (let k = 0; k Math.floor(n / 2)) { lea..
์ธ๋„ค์ผ 7. ์Šคํƒ๊ณผ ํ (Stacks and Queues) Codility Lesson ํ•œ๊ตญ์–ด ์ •๋ฆฌ๋ณธ (JavaScript ver.) ์Šคํƒ(Stack)๊ณผ ํ(Queue)๋ž€?์Šคํƒ๊ณผ ํ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ๋Œ€ํ‘œ์ ์ธ ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค. ์ด๋“ค์€ push(์‚ฝ์ž…) ๋ฐ pop(์‚ญ์ œ) ์—ฐ์‚ฐ์„ ์ œ๊ณตํ•˜์ง€๋งŒ, ๋ฐ์ดํ„ฐ์˜ ์ž…์ถœ๋ ฅ ๋ฐฉ์‹์ด ๋‹ค๋ฅด๋‹ค.1. ์Šคํƒ(Stack)์Šคํƒ์€ LIFO(Last In, First Out) ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง€๋ฉฐ, ๊ฐ€์žฅ ์ตœ๊ทผ์— ์ถ”๊ฐ€๋œ ์š”์†Œ๊ฐ€ ๊ฐ€์žฅ ๋จผ์ € ์ œ๊ฑฐ๋œ๋‹ค. ๋งˆ์น˜ ์ ‘์‹œ๋ฅผ ์Œ“์•„์˜ฌ๋ฆฌ๊ณ  ์œ„์—์„œ๋ถ€ํ„ฐ ํ•˜๋‚˜์”ฉ ์ œ๊ฑฐํ•˜๋Š” ๋ฐฉ์‹๊ณผ ์œ ์‚ฌํ•˜๋‹ค.JavaScript ์ฝ”๋“œ:class Stack { constructor() { this.stack = []; } push(x) { this.stack.push(x); } pop() { if (this.isEmpty()) throw new ..
์ธ๋„ค์ผ 6. ์ •๋ ฌ (Sorting) Codility Lesson ํ•œ๊ตญ์–ด ์ •๋ฆฌ๋ณธ (JavaScript ver.) ์ •๋ ฌ(Sorting)์ด๋ž€?์ •๋ ฌ์ด๋ž€ ๋ฐ์ดํ„ฐ๋ฅผ ํŠน์ •ํ•œ ์ˆœ์„œ๋Œ€๋กœ ๋ฐฐ์น˜ํ•˜๋Š” ๊ณผ์ •์ด๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ์ˆซ์ž ๋˜๋Š” ๋ฌธ์ž์—ด์„ ๊ฐ’์— ๋”ฐ๋ผ ์ •๋ ฌํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ํ•™์ƒ์„ ํ‚ค ์ˆœ์„œ๋Œ€๋กœ ์ •๋ ฌํ•˜๊ฑฐ๋‚˜, ๋„์‹œ๋ฅผ ์ธ๊ตฌ์ˆ˜ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌํ•  ์ˆ˜ ์žˆ๋‹ค.๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฐฐ์—ด์ด ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜์ž.A = [5, 2, 8, 14, 1, 16];์ด๋ฅผ ์ˆซ์ž ํฌ๊ธฐ ์ˆœ์„œ๋กœ ์ •๋ ฌํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.A = [1, 2, 5, 8, 14, 16];์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์‹œ๊ฐ„ ๋ณต์žก๋„์™€ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์— ๋”ฐ๋ผ ์ฐจ์ด๊ฐ€ ์žˆ๋‹ค. ์—ฌ๊ธฐ์„œ๋Š” ๋Œ€ํ‘œ์ ์ธ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ดํŽด๋ณธ๋‹ค.1. ์„ ํƒ ์ •๋ ฌ (Selection Sort)์•„์ด๋””์–ด: ๋ฐฐ์—ด์—์„œ ๊ฐ€์žฅ ์ž‘์€ ์›์†Œ๋ฅผ ์ฐพ์•„ ์ฒซ ๋ฒˆ์งธ ์œ„์น˜์™€ ๊ตํ™˜ํ•˜๋Š” ์ž‘์—…์„ ๋ฐ˜๋ณตํ•œ๋‹ค.JavaScript ์ฝ”๋“œ:function selectionSort(A) { let n..
์ธ๋„ค์ผ 5. ๋ˆ„์  ํ•ฉ (Prefix Sums) Codility Lesson ํ•œ๊ตญ์–ด ์ •๋ฆฌ๋ณธ (JavaScript ver.) ๋ˆ„์  ํ•ฉ(Prefix Sums)์ด๋ž€?๋ฐฐ์—ด์˜ ํŠน์ • ๊ตฌ๊ฐ„(์Šฌ๋ผ์ด์Šค)์˜ ํ•ฉ์„ ๋น ๋ฅด๊ฒŒ ๊ณ„์‚ฐํ•˜๋Š” ๊ฐ•๋ ฅํ•œ ๊ธฐ๋ฒ•์ด ๋ˆ„์  ํ•ฉ(Prefix Sums) ์ด๋‹ค. ์ด๋Š” ๋ฐฐ์—ด์˜ ์ฒ˜์Œ๋ถ€ํ„ฐ ํŠน์ • ์œ„์น˜๊นŒ์ง€์˜ ํ•ฉ์„ ๋ฏธ๋ฆฌ ๊ณ„์‚ฐํ•ด ์ €์žฅํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.์˜ˆ๋ฅผ ๋“ค์–ด, ๋ฐฐ์—ด A๊ฐ€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค๊ณ  ํ•˜์ž.A = [aโ‚€, aโ‚, aโ‚‚, ..., aโ‚™โ‚‹โ‚]๊ทธ๋Ÿฌ๋ฉด ๋ˆ„์  ํ•ฉ ๋ฐฐ์—ด P๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ •์˜๋œ๋‹ค.P[0] = 0P[1] = aโ‚€P[2] = aโ‚€ + aโ‚P[3] = aโ‚€ + aโ‚ + aโ‚‚...P[n] = aโ‚€ + aโ‚ + ... + aโ‚™โ‚‹โ‚์ด์ „ ๊ฐ’ P[k-1]์— ํ˜„์žฌ ๊ฐ’ A[k-1]์„ ๋”ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๋ˆ„์  ํ•ฉ์„ ๊ณ„์‚ฐํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ „์ฒด ์—ฐ์‚ฐ์€ O(n) ์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐ€์ง„๋‹ค.1. O(n) ์‹œ๊ฐ„ ๋ณต์žก๋„์˜ ๋ˆ„์  ํ•ฉ ๊ณ„์‚ฐJavaScript ์ฝ”๋“œ:funct..
์ธ๋„ค์ผ 4. ์›์†Œ ๊ฐœ์ˆ˜ ์„ธ๊ธฐ (Counting Elements) Codility Lesson ํ•œ๊ตญ์–ด ์ •๋ฆฌ๋ณธ (JavaScript ver.) ์›์†Œ ๊ฐœ์ˆ˜ ์„ธ๊ธฐ๋ž€?๋ฐฐ์—ด์„ ํ™œ์šฉํ•˜์—ฌ ์ˆซ์ž ์‹œํ€€์Šค๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฐฉ๋ฒ•์—๋Š” ์—ฌ๋Ÿฌ ๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ์—ฐ์†๋œ ์ˆซ์ž aโ‚€, aโ‚, ..., aโ‚™โ‚‹โ‚๋ฅผ ๋ฐฐ์—ด์˜ ์ธ๋ฑ์Šค์— ๋งž์ถฐ ์ €์žฅํ•œ๋‹ค.์˜ˆ๋ฅผ ๋“ค์–ด:let A = [4, 2, 4, 5];// A[0] = 4, A[1] = 2, A[2] = 4, A[3] = 5๊ทธ๋Ÿฌ๋‚˜ ์›์†Œ๋ฅผ ์ง์ ‘ ์ €์žฅํ•˜๋Š” ๋Œ€์‹ , ๊ฐ ์ˆซ์ž์˜ ๋“ฑ์žฅ ํšŸ์ˆ˜๋ฅผ ์„ธ๋Š” ๋ฐฐ์—ด ์„ ๋งŒ๋“ค ์ˆ˜๋„ ์žˆ๋‹ค.์ด ๊ฒฝ์šฐ, ๋ฐฐ์—ด count[] ๋Š” ํ•ด๋‹น ๊ฐ’์ด ๋“ฑ์žฅํ•œ ํšŸ์ˆ˜๋ฅผ ์ €์žฅํ•œ๋‹ค.count[2] = 1; // ์ˆซ์ž 2๋Š” ํ•œ ๋ฒˆ ๋“ฑ์žฅcount[4] = 2; // ์ˆซ์ž 4๋Š” ๋‘ ๋ฒˆ ๋“ฑ์žฅcount[5] = 1; // ์ˆซ์ž 5๋Š” ํ•œ ๋ฒˆ ๋“ฑ์žฅ์ด ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋ฉด ํŠน์ • ์ˆซ์ž๊ฐ€ ๋“ฑ์žฅํ•œ ํšŸ์ˆ˜๋ฅผ O(1) ์‹œ๊ฐ„์— ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.1. O(n + m) ์‹œ๊ฐ„..
์ธ๋„ค์ผ 3. ์‹œ๊ฐ„ ๋ณต์žก๋„ (Time Complexity) Codility Lesson ํ•œ๊ตญ์–ด ์ •๋ฆฌ๋ณธ (JavaScript ver.) ์‹œ๊ฐ„ ๋ณต์žก๋„๋ž€?์‹œ๊ฐ„ ๋ณต์žก๋„(Time Complexity)๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ”„๋กœ๊ทธ๋žจ์˜ ์‹คํ–‰ ์‹œ๊ฐ„์„ ๋Œ€๋žต์ ์œผ๋กœ ์ถ”์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ •ํ™•ํ•œ ์‹คํ–‰ ์‹œ๊ฐ„์„ ๊ณ„์‚ฐํ•˜๋Š” ๊ฒƒ์€ ์ปดํŒŒ์ผ๋Ÿฌ, ์ปดํ“จํ„ฐ์˜ ์ข…๋ฅ˜, ํ”„๋กœ์„ธ์„œ ์†๋„ ๋“ฑ ์—ฌ๋Ÿฌ ์š”์ธ์— ์˜ํ•ด ์˜ํ–ฅ์„ ๋ฐ›๊ธฐ ๋•Œ๋ฌธ์— ๋งค์šฐ ๋ณต์žกํ•˜๋‹ค. ๋”ฐ๋ผ์„œ, ์šฐ๋ฆฌ๋Š” ์‹คํ–‰ ์‹œ๊ฐ„์˜ ๋Œ€๋žต์ ์ธ ํฌ๊ธฐ(order of magnitude) ๋ฅผ ์ธก์ •ํ•˜๋Š” ๊ฒƒ์ด ๋ชฉํ‘œ์ด๋‹ค.๋ณต์žก๋„๋Š” ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋ณธ ์—ฐ์‚ฐ(primitive operation) ์˜ ์ตœ๋Œ€ ๊ฐœ์ˆ˜๋กœ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ์—ฌ๊ธฐ์„œ ๊ธฐ๋ณธ ์—ฐ์‚ฐ์ด๋ž€ ๋ง์…ˆ, ๊ณฑ์…ˆ, ๋Œ€์ž… ์—ฐ์‚ฐ ๋“ฑ์„ ์˜๋ฏธํ•œ๋‹ค. ํ•˜์ง€๋งŒ ๋ชจ๋“  ์—ฐ์‚ฐ์„ ๋‹ค ๊ณ ๋ คํ•˜๋Š” ๋Œ€์‹ , ํ”„๋กœ๊ทธ๋žจ์—์„œ ๊ฐ€์žฅ ๋งŽ์ด ์‹คํ–‰๋˜๋Š” ์ง€๋ฐฐ์ ์ธ ์—ฐ์‚ฐ(dominant operation) ์— ์ดˆ์ ์„ ๋งž์ถ˜๋‹ค.ํ”„๋กœ๊ทธ๋žจ์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” ์ž…๋ ฅ ๋ฐ์ดํ„ฐ์—..
์ธ๋„ค์ผ 2. ๋ฐฐ์—ด (Arrays) Codility Lesson ํ•œ๊ตญ์–ด ์ •๋ฆฌ๋ณธ (JavaScript ver.) ๋ฐฐ์—ด (Arrays)๋ฐฐ์—ด(Array)์€ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํ•ญ๋ชฉ์„ ํ•œ ๊ณณ์— ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ์ด๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์‡ผํ•‘ ๋ชฉ๋ก์„ ์ƒ๊ฐํ•ด๋ณด์ž. ๊ฐ๊ฐ์˜ ์ œํ’ˆ์„ ๊ฐœ๋ณ„์ ์ธ ํŽ˜์ด์ง€์— ๊ธฐ๋กํ•˜์ง€ ์•Š๊ณ , ํ•œ ํŽ˜์ด์ง€์— ๋‚˜์—ดํ•˜๋Š” ๊ฒƒ์ด ๋” ํšจ์œจ์ ์ด๋‹ค. ๋ฐฐ์—ด์€ ์ด๋Ÿฌํ•œ ๊ฐœ๋…๊ณผ ์œ ์‚ฌํ•˜๋‹ค. ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ, 1๋…„ ๋™์•ˆ์˜ ์ผ์ผ ๊ธฐ์˜จ์„ ๊ธฐ๋กํ•˜๋ ค ํ•œ๋‹ค๋ฉด, 365๊ฐœ์˜ ๋ณ€์ˆ˜๋ฅผ ๋งŒ๋“ค๊ธฐ๋ณด๋‹ค๋Š” ํ•˜๋‚˜์˜ ๋ฐฐ์—ด์— ์ €์žฅํ•˜๋Š” ๊ฒƒ์ด ๋” ์ ์ ˆํ•˜๋‹ค.1. ๋ฐฐ์—ด ์ƒ์„ฑ (Creating an Array)์šฐ๋ฆฌ๋Š” ์„ธ ๊ฐœ์˜ ์ œํ’ˆ์„ ํฌํ•จํ•˜๋Š” ์‡ผํ•‘ ๋ชฉ๋ก์„ ๋งŒ๋“ค๊ณ ์ž ํ•œ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฐฐ์—ด์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.JavaScript ์ฝ”๋“œ:let shopping = ['bread', 'butter', 'cheese'];๋ฐฐ์—ด์˜ ๊ฐ ํ•ญ๋ชฉ์„ ์š”์†Œ(element) ๋ผ๊ณ  ํ•œ๋‹ค. ๋ฐฐ์—ด์€ ๋ฉ”๋ชจ๋ฆฌ..
์ธ๋„ค์ผ 1. ๋ฐ˜๋ณต (Iterations) Codility Lesson ํ•œ๊ตญ์–ด ์ •๋ฆฌ๋ณธ (JavaScript ver.) Codility ์—์„œ ์ œ๊ณตํ•˜๋Š” lesson์˜ open material ์„ ๋ชจ๋‘ ํ•œ๊ตญ์–ด๋กœ ์ •๋ฆฌํ•˜๋Š” ๋™์‹œ์—, ๋‚˜๋Š” JS ๋กœ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ๋ฅผ ๋ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํŠœํ† ๋ฆฌ์–ผ ์† ํŒŒ์ด์ฌ ์ฝ”๋“œ๋ฅผ JS ์ฝ”๋“œ๋กœ ๋ฐ”๊ฟ” ์ •๋ฆฌํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค.100% ์™„๋ฒฝํ•œ ๋ฒˆ์—ญ๋ณธ์ด ์•„๋‹Œ ํ•„์ž์˜ ์ž…๋ง›๋Œ€๋กœ (๋ฒผ๋ฝ์น˜๊ธฐ์šฉ )ใ…Ž ์ •๋ฆฌํ•œ ๋‚ด์šฉ์ด๋‹ค.lesson 17๊นŒ์ง€ ๋‹ค ๊ณต๋ถ€ํ•˜๊ณ  ๋ฌธ์ œ ํ’€๊ณ  ๋ธ”๋กœ๊ทธ์— ํฌ์ŠคํŒ…๊นŒ์ง€ ํ•˜๋Š”๊ฒŒ ๋ชฉํ‘œ!๋ฐ˜๋ณต๋ฌธ (Iterations)ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ๋ฐ˜๋ณต(iterating) ์ด๋ž€ ํ”„๋กœ๊ทธ๋žจ์˜ ์ผ๋ถ€๋ฅผ ์—ฌ๋Ÿฌ ๋ฒˆ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค. ์ด ์žฅ์—์„œ๋Š” ๋ฐ˜๋ณต์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋ณธ์ ์ธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ตฌ์กฐ์ธ for๋ฌธ๊ณผ while๋ฌธ์„ ๋‹ค๋ฃฌ๋‹ค.1.1. For ๋ฃจํ”„ (For Loops)์–ด๋–ค ์—ฐ์‚ฐ์„ ์ผ์ • ํšŸ์ˆ˜๋งŒํผ ๋ฐ˜๋ณตํ•˜๊ฑฐ๋‚˜, ํŠน์ • ์ปฌ๋ ‰์…˜์˜ ๊ฐ ์š”์†Œ์— ๋Œ€ํ•ด ๋ฐ˜๋ณตํ•˜๋ ค๋ฉด fo..