JavaScript 100์ œ chapter1-5

ํฌ๋กฑยท2023๋…„ 9์›” 19์ผ
0

์ฝ”๋”ฉํ…Œ์ŠคํŠธ

๋ชฉ๋ก ๋ณด๊ธฐ
6/61

๐Ÿ’–keywords๐Ÿ’–
๋ฌธ์ œ41 - ์†Œ์ˆ˜ํŒ๋ณ„ / ๋ฐ˜๋ณต๋ฌธ
๋ฌธ์ œ42 - ์š”์ผ ๊ตฌํ•˜๊ธฐ / Date, getDay()
๋ฌธ์ œ43 - 10์ง„์ˆ˜๋ฅผ 2์ง„์ˆ˜๋กœ
๋ฌธ์ œ44 - ๊ฐ ์ˆซ์ž์˜ ํ•ฉ
๋ฌธ์ œ45 - getTime() / 1๋…„์„ ms๋กœ
๋ฌธ์ œ46 - ๊ฐ ์ž๋ฆฌ์ˆ˜์˜ ํ•ฉ
๋ฌธ์ œ47 - Set ์ž๋ฃŒ
๋ฌธ์ œ48 - ๋Œ€์†Œ๋ฌธ์ž ๋ฐ”๊ฟ”์„œ ์ถœ๋ ฅํ•˜๊ธฐ
๋ฌธ์ œ49 - ์ตœ๋Œ“๊ฐ’ ๊ตฌํ•˜๊ธฐ / sort()
๋ฌธ์ œ50 - ๋ฒ„๋ธ”์ •๋ ฌ



๋ฌธ์ œ41 : ์†Œ์ˆ˜ํŒ๋ณ„

์ˆซ์ž๊ฐ€ ์ฃผ์–ด์ง€๋ฉด ์†Œ์ˆ˜์ธ์ง€ ์•„๋‹Œ์ง€ ํŒ๋ณ„ํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”.
์†Œ์ˆ˜์ด๋ฉด YES๋กœ, ์†Œ์ˆ˜๊ฐ€ ์•„๋‹ˆ๋ฉด NO๋กœ ์ถœ๋ ฅํ•ด์ฃผ์„ธ์š”.
(์†Œ์ˆ˜ : 1๊ณผ ์ž๊ธฐ ์ž์‹ ๋งŒ์œผ๋กœ ๋‚˜๋ˆ„์–ด๋–จ์–ด์ง€๋Š” 1๋ณด๋‹ค ํฐ ์–‘์˜ ์ •์ˆ˜)

๐Ÿ“˜๋กœ์ง๐Ÿ“˜
์ž๊ธฐ ์ž์‹ ๋ณด๋‹ค ์ž‘์€ ์ˆ˜(1๋ณด๋‹คํผ)๋“ค์„ ๊ณ„์† ๋‚˜๋ˆˆ๊ฐ’์˜ ๋‚˜๋จธ์ง€๊ฐ€ ์žˆ์„๊ฒฝ์šฐ, ์†Œ์ˆ˜์ž„.
๋‚˜๋จธ์ง€๊ฐ€ 0์ด ๋œ๋‹ค๋ฉด ์†Œ์ˆ˜๊ฐ€ ์•„๋‹ˆ๋‹ค


๐ŸŒž์„ ์ƒ๋‹˜ํ’€์ด๐ŸŒž

const num = 6

function isPrime(n) {
  for(let i = 2; n>i; i++){
    if(n % i === 0){
      console.log('์†Œ์ˆ˜๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค')
      return false; //ํ•จ์ˆ˜ ์ข…๋ฃŒ
    }
  }
  //n์ด 1์ผ ๊ฒฝ์šฐ๋ฅผ ์œ„ํ•ด
  if(n>1){
    console.log('์†Œ์ˆ˜์ž…๋‹ˆ๋‹ค')
  } else{ 
  console.log('์†Œ์ˆ˜๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค')}
}

isPrime(num)


๋ฌธ์ œ42 : 2020๋…„

2020๋…„ 1์›” 1์ผ์€ ์ˆ˜์š”์ผ์ž…๋‹ˆ๋‹ค. 2020๋…„ a์›” b์ผ์€ ๋ฌด์Šจ ์š”์ผ์ผ๊นŒ์š”?
๋‘ ์ˆ˜ a, b๋ฅผ ์ž…๋ ฅ๋ฐ›์•„ 2020๋…„ a์›” b์ผ์ด ๋ฌด์Šจ ์š”์ผ์ธ์ง€ ๋ฆฌํ„ดํ•˜๋Š” ํ•จ์ˆ˜ solution์„ ์™„์„ฑํ•˜์„ธ์š”.
์š”์ผ์˜ ์ด๋ฆ„์€ ์ผ์š”์ผ๋ถ€ํ„ฐ ํ† ์š”์ผ๊นŒ์ง€ ๊ฐ๊ฐ SUN, MON, TUE, WED, THU, FRI, SAT ์ž…๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด a = 5, b = 24๋ผ๋ฉด 5์›” 24์ผ์€ ์ผ์š”์ผ์ด๋ฏ€๋กœ ๋ฌธ์ž์—ด "SUN"๋ฅผ ๋ฐ˜ํ™˜ํ•˜์„ธ์š”.

์ œํ•œ ์กฐ๊ฑด
2020๋…„์€ ์œค๋…„์ž…๋‹ˆ๋‹ค.
2020๋…„ a์›” b์ผ์€ ์‹ค์ œ๋กœ ์žˆ๋Š” ๋‚ ์ž…๋‹ˆ๋‹ค.
(13์›” 26์ผ์ด๋‚˜ 2์›” 45์ผ ๊ฐ™์€ ๋‚ ์งœ๋Š” ์ฃผ์–ด์ง€์ง€ ์•Š์Šต๋‹ˆ๋‹ค.)

๐Ÿ“˜๋‚˜๋งŒ์˜ ๋กœ์ง๐Ÿ“˜
Date๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด๋œ๋‹ค
var christmas = new Date('2020-12-25');
console.log(christmas);
==> Fri Dec 25 2020 09:00:00 GMT+0900 (ํ•œ๊ตญ ํ‘œ์ค€์‹œ)
์ด๋ฅผ ๋ฌธ์ž์—ด๋กœ ๋ฐ”๊พผ๋’ค, slice(0,2) ํ•ด์ค€ ํ›„, toUppercase() ํ•˜๋ฉด ๋


const a = 5;
const b = 24;

โ“2020๋…„ 5์›” 24์ผ์€ ๋ฌด์Šจ ์š”์ผ์ผ๊นŒ์š”โ“

function calcul(a,b){
  const ๋‚ ์งœ = new Date(`2020-${a}-${b}`)
  const ์š”์ผ =  ๋‚ ์งœ.toString().slice(0,3).toUpperCase()
  console.log(์š”์ผ)
}

calcul(a,b) //"SUN"

๐Ÿ““์„ ์ƒ๋‹˜๋กœ์ง๐Ÿ““
๋‚ด๊ฐ€ ํ•œ ๊ฒƒ์ฒ˜๋Ÿผ Date๊ฐ์ฒด๋ฅผ ์ด์šฉํ•œ ๋’ค, getDay() ๋ฉ”์†Œ๋“œ๋ฅผ ํ†ตํ•ด
์š”์ผ์˜ index๋ฅผ ๋ฐ˜ํ™˜ํ•˜์˜€๋‹ค.
0์€ ์ผ์š”์ผ, 1์€ ์›”์š”์ผ '''.

const month = prompt('์›”์„ ์ž…๋ ฅํ•˜์„ธ์š”.');
const date = prompt('์ผ์„ ์ž…๋ ฅํ•˜์„ธ์š”.');

function solution(a,b){
    const day = ["SUN","MON","TUE","WED","THU","FRI","SAT"];

    const x = new Date('2020-'+a+'-'+b);
    return day[x.getDay()];
}
console.log(solution(month, date));

๋ฌธ์ œ43 : 10์ง„์ˆ˜๋ฅผ 2์ง„์ˆ˜๋กœ

์šฐ๋ฆฌ๊ฐ€ ํ”ํžˆ ์‚ฌ์šฉํ•˜๋Š” ์ˆซ์ž 1, 8, 19, 28893 ๋“ฑ๋“ฑ...์€ 10์ง„์ˆ˜ ์ฒด๊ณ„์ž…๋‹ˆ๋‹ค.
์ด๋ฅผ ์ปดํ“จํ„ฐ๊ฐ€ ์•Œ์•„ ๋“ค์„ ์ˆ˜ ์žˆ๋Š” 2์ง„์ˆ˜๋กœ ๋ฐ”๊พธ๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์–ด๋–ป๊ฒŒ ํ•ด์•ผํ• ๊นŒ์š”?

์‚ฌ์šฉ์ž์—๊ฒŒ ์ˆซ์ž๋ฅผ ์ž…๋ ฅ๋ฐ›๊ณ  ์ด๋ฅผ 2์ง„์ˆ˜๋ฅผ ๋ฐ”๊พธ๊ณ  ๊ทธ ๊ฐ’์„ ์ถœ๋ ฅํ•ด์ฃผ์„ธ์š”.

๐Ÿ“˜๋กœ์ง๐Ÿ“˜
์šฐ์„  10์ง„์ˆ˜๋ฅผ 2์ง„์ˆ˜๋กœ ๋ฐ”๊พธ๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.
2๋กœ ๊ณ„์† ๋‚˜๋ˆˆ๋’ค, ๋‚˜๋จธ์ง€๋ฅผ ์ €์žฅํ•ด์•ผํ•œ๋‹ค!


let num = prompt('10์ง„์ˆ˜๋ฅผ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”.')
let ๋‚˜๋จธ์ง€๋ฐฐ์—ด = []; //๋‚˜๋จธ์ง€๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฐฐ์—ด
let result = '';

while (num){ //a๊ฐ€ 0์ด๋ฉด ์ข…๋ฃŒ๋จ
	๋‚˜๋จธ์ง€๋ฐฐ์—ด.push(num % 2);
	num = Math.floor(num/2) //์†Œ์ˆ˜๊ฐ€ ๋‚˜์˜ค๋Š”๊ฑธ ๋ฐฉ์ง€ํ•œ๋‹ค.
  
}
์‚ฌ์ง„์„ ์˜ˆ๋ฅผ๋“ค์–ด ๋งจ์ฒ˜์Œ์— num์€ 13 ์ด์˜€๋Š”๋ฐ, 
 2๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€ 1์„ ์ €์žฅํ•˜๊ณ , 6์„ ๋‹ค์‹œ num์— ์ง‘์–ด๋„ฃ์Œ. 
 ๊ทธ๋ฆฌ๊ณ  ๊ณ„์† ๋ฐ˜๋ณต!

๋‚˜๋จธ์ง€๋ฐฐ์—ด.reverse(); // ์ˆœ์„œ๋ฅผ ์—ญ์œผ๋กœ ๋ฐ”๊ฟ”์ค˜์•ผํ•จ

๋งŒ์•ฝ num์ด 32๋ผ๋ฉด, reverseํ•œ ๊ฐ’์ด
[1,0,0,0,0,0] ์ž„.
์šฐ๋ฆฌ๊ฐ€ ์›ํ•˜๋Š” ๊ฐ’์€ 100000์ด๋ฏ€๋กœ,
join("") ํ•ด์ค€๋‹ค.

๋‚˜๋จธ์ง€๋ฐฐ์—ด.reverse().join("")

๋ฌธ์ œ44 : ๊ฐ ์ž๋ฆฌ์ˆ˜์˜ ํ•ฉ

์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ์–‘์˜ ์ •์ˆ˜์˜ ๊ฐ ์ž๋ฆฌ์ˆ˜์˜ ํ•ฉ์„ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“ค์–ด์ฃผ์„ธ์š”

์˜ˆ๋ฅผ๋“ค์–ด
18234 = 1+8+2+3+4 ์ด๊ณ  ์ •๋‹ต์€ 18 ์ž…๋‹ˆ๋‹ค.
3849 = 3+8+4+9 ์ด๊ณ  ์ •๋‹ต์€ 24์ž…๋‹ˆ๋‹ค.


์ž…์ถœ๋ ฅ

์ž…๋ ฅ : 18234
์ถœ๋ ฅ : 18

์ž…๋ ฅ : 3849
์ถœ๋ ฅ : 24


๐Ÿ“˜ํ’€์ด๐Ÿ“˜

const num = '3849'
let sum = 0;

num.split('').forEach(
  el=> sum = sum +parseInt(el)
)
console.log(sum)

๋ฌธ์ œ45 : getTime()ํ•จ์ˆ˜ ์‚ฌ์šฉํ•˜๊ธฐ

Date๊ฐ์ฒด์˜ ๋ฉ”์†Œ๋“œ ์ค‘ ํ•˜๋‚˜์ธ getTime()์€ 1970๋…„ 1์›” 1์ผ 0์‹œ 0๋ถ„ 0์ดˆ ์ดํ›„๋กœ๋ถ€ํ„ฐ ์ง€๊ธˆ๊นŒ์ง€ ํ๋ฅธ ์‹œ๊ฐ„์„ ์ฒœ๋ถ„์˜ 1์ดˆ ๋‹จ์œ„(ms)๋กœ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

1000ms = 1์ดˆ

์ด๋ฅผ ์ด์šฉํ•˜์—ฌ ํ˜„์žฌ ๋…„๋„(2023)๋ฅผ ์ถœ๋ ฅํ•ด๋ณด์„ธ์š”.

const ์ง€๊ธˆ = new Date();
์ง€๊ธˆ.getTime()
๐Ÿ‘‰ 1970๋…„ 1์›” 1์ผ 0์‹œ 0๋ถ„ 0์ดˆ ์ดํ›„๋กœ๋ถ€ํ„ฐ ์ง€๊ธˆ๊นŒ์ง€ ํ๋ฅธ ์‹œ๊ฐ„์„ ์ฒœ๋ถ„์˜ 1์ดˆ ๋‹จ์œ„(ms)๋กœ ๋ฐ˜ํ™˜

์ผ๋…„์— ๋ช‡ ms์ธ์ง€ ๋จผ์ € ์•Œ์•„๋‚ด๊ณ , ์ง€๊ธˆ๊นŒ์ง€ํ๋ฅธms๋ฅผ ๋‚˜๋ˆˆ๋‹ค.
1970์—๋‹ค ๋‚˜๋ˆˆ ๋ชซ์„ ๋”ํ•˜๋ฉด ํ˜„์žฌ ๋…„๋„!

โ“1๋…„์€ ๋ช‡ ms์ผ๊นŒ์š”โ“  => ์šฐ์„  1๋…„์ด ๋ช‡ ์ดˆ์ธ์ง€ ๊ตฌํ•œ ํ›„, 1000์„ ๊ณฑํ•˜์ž.

ํ•˜๋ฃจ ์ดˆ * 365 = 1๋…„ ์ดˆ
-------------------------------------------
  
ํ•œ์‹œ๊ฐ„ ๐Ÿ‘‰ 60์ดˆ * 60 = 3600์ดˆ
ํ•˜๋ฃจ  ๐Ÿ‘‰ 60์ดˆ * 60 * 24 = 86400์ดˆ
1๋…„  ๐Ÿ‘‰ 60์ดˆ * 60 * 24 * 365 = 31536000์ดˆ

1๋…„์„ ms ๋กœ ๐Ÿ‘‰ 60์ดˆ * 60 * 24 * 365 * 1000 = 31536000000(ms)


-------------------------------------------
๐ŸŒž์„ ์ƒ๋‹˜ํ’€์ด๐ŸŒž

const now = new Date()
const ํ๋ฅธ์„ธ์›” = Math.floor(now.getTime()/(60*60*24*365*1000))

console.log(1970+ํ๋ฅธ์„ธ์›”)
// 2023
  

๋ฌธ์ œ46 : ๊ฐ ์ž๋ฆฌ์ˆ˜์˜ ํ•ฉ 2

1๋ถ€ํ„ฐ 20๊นŒ์ง€์˜(20์„ ํฌํ•จ) ๋ชจ๋“  ์ˆซ์ž๋ฅผ ์ผ๋ ฌ๋กœ ๋†“๊ณ  ๋ชจ๋“  ์ž๋ฆฟ์ˆ˜์˜ ์ด ํ•ฉ์„ ๊ตฌํ•˜์„ธ์š”.

์˜ˆ๋ฅผ ๋“ค์–ด 10๋ถ€ํ„ฐ 15๊นŒ์ง€์˜ ๋ชจ๋“  ์ˆซ์ž๋ฅผ ์ผ๋ ฌ๋กœ ๋†“์œผ๋ฉด 101112131415์ด๊ณ 
๊ฐ ์ž๋ฆฌ์˜ ์ˆซ์ž๋ฅผ ๋”ํ•˜๋ฉด 21์ž…๋‹ˆ๋‹ค. (1+0+1+1+1+2+1+3+1+4+1+5 = 21)


let arr = []

for(let i =1;i<=20;i++){
  arr.push(i)
}

//console.log(arr) 
//[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]

//console.log(arr.join("")) 
//"1234567891011121314151617181920"

let sum = 0;
arr.join("").split('').forEach(el => sum=sum+parseInt(el))
console.log(sum) //102

๋ฌธ์ œ47 : set ์ž๋ฃŒํ˜•์˜ ์‘์šฉ

๋ฐ”์šธ๋žฉ์—์„œ๋Š” 3์›” 29์ผ ์ œ์ฃผ๋Œ€ํ•™๊ต์—์„œ '์ œ์ฃผ ๋น…๋ฐ์ดํ„ฐ ์‚ฌํšŒํ˜์‹  ํ•ด์ปคํ†ค' ํ–‰์‚ฌ๋ฅผ ์ฃผ์ตœํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด์— ๊ตฌ๊ธ€ ์„ค๋ฌธ์ง€๋ฅผ ๋ฐฐํฌํ•˜์˜€์œผ๋‚˜ ์ œ์ฃผ๋Œ€ํ•™์ƒ๋“ค์ด ์ค‘๋ณตํ•ด์„œ n๊ฐœ์”ฉ ์„ค๋ฌธ์ง€๋ฅผ ์ œ์ถœํ•˜์˜€์Šต๋‹ˆ๋‹ค.
์ค‘๋ณต๋œ ๋ฐ์ดํ„ฐ๋“ค์„ ์‚ญ์ œํ•˜์—ฌ ์‹ค์ œ ์ ‘์ˆ˜ ๋ช…๋‹จ์ด ๋ช‡ ๋ช…์ธ์ง€ ์•Œ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

์•„๋ž˜ ์ฃผ์–ด์ง„ ๋ฐ์ดํ„ฐ๋“ค๋กœ๋ถ€ํ„ฐ ์ค‘๋ณต์„ ์ œ๊ฑฐํ•˜์—ฌ ์‹ค์ œ ์ ‘์ˆ˜ ์ธ์›์„ ์ถœ๋ ฅํ•ด ์ฃผ์„ธ์š”.

const people = {
  ์ดํ˜ธ์ค€: "01050442903",
  ์ดํ˜ธ์ƒ: "01051442904",
  ์ด์ค€ํ˜ธ: "01050342904",
  ์ดํ˜ธ์ค€: "01050442903",
  ์ด์ค€: "01050412904",
  ์ดํ˜ธ: "01050443904",
  ์ดํ˜ธ์ค€: "01050442903"
};

let result = new Set();
for (let key in people) {
  result.add(people[key]); //Set๊ฐ์ฒด์— ๋ฐ์ดํ„ฐ์ €์žฅ์€ add
}
console.log(result.size); 
//size ๋Š” set ๊ฐ์ฒด ๋‚ด ๊ฐ’์˜ ๊ฐœ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.


-----------------------------------------------

๐Ÿคถ ๋‚˜๋Š” Set์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ํ’€์—ˆ๋‹ค...

const ์‚ฌ๋žŒ๋“ค = Object.keys(people)
//["์ดํ˜ธ์ค€","์ดํ˜ธ์ƒ","์ด์ค€ํ˜ธ","์ด์ค€","์ดํ˜ธ"]
console.log(์‚ฌ๋žŒ๋“ค.length) //5

๋ฌธ์ œ48 : ๋Œ€์†Œ๋ฌธ์ž ๋ฐ”๊ฟ”์„œ ์ถœ๋ ฅํ•˜๊ธฐ

๋ฌธ์ž์—ด์ด ์ฃผ์–ด์ง€๋ฉด ๋Œ€๋ฌธ์ž์™€ ์†Œ๋ฌธ์ž๋ฅผ ๋ฐ”๊ฟ”์„œ ์ถœ๋ ฅํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์„ธ์š”.

์ž…์ถœ๋ ฅ

์ž…๋ ฅ : AAABBBcccddd
์ถœ๋ ฅ : aaabbbCCCDDD

๐Ÿ“˜๋กœ์ง๐Ÿ“˜
๋ฌธ์ž์—ด์„ ํ•˜๋‚˜ํ•˜๋‚˜ ์ˆœํšŒํ•ด๊ฐ€๋ฉด์„œ ๋Œ€์†Œ๋ฌธ์ž๋กœ ๋ฐ”๊ฟ”์ฃผ์ž


const ๋ฌธ์ž ='aaaBBBccc'
let ์ถœ๋ ฅ = ''
for(let i in ๋ฌธ์ž){
 if (๋ฌธ์ž[i].toUpperCase() === ๋ฌธ์ž[i]){
   ์ถœ๋ ฅ = ์ถœ๋ ฅ+๋ฌธ์ž[i].toLowerCase()
 }else{
    ์ถœ๋ ฅ = ์ถœ๋ ฅ+๋ฌธ์ž[i].toUpperCase()
 }
}
console.log(์ถœ๋ ฅ)

๋ฌธ์ œ49 : ์ตœ๋Œ“๊ฐ’ ๊ตฌํ•˜๊ธฐ

์ˆœ์„œ๊ฐ€ ์—†๋Š” 10๊ฐœ์˜ ์ˆซ์ž๊ฐ€ ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„๋˜์–ด ์ฃผ์–ด์ง„๋‹ค. ์ฃผ์–ด์ง„ ์ˆซ์ž๋“ค ์ค‘ ์ตœ๋Œ“๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋ผ.

์ž…์ถœ๋ ฅ

์ž…๋ ฅ : 10 9 8 7 6 5 4 3 2 1
์ถœ๋ ฅ : 10

const ์ˆซ์ž ='10 9 8 7 6 5 4 3 2 1'
const arr = ์ˆซ์ž.split(' ')
// ['10', '9', '8', '7', '6', '5', '4', '3', '2', '1']

const newArr = [];
arr.forEach(el => newArr.push(parseInt(el)))



newArr.sort(function(a,b){
 return a-b
})

 // newArr [1,2,3,4,5,6,7,8,9,10] 
console.log(newArr[newArr.length-1]) //10

๋ฌธ์ œ50 : ๋ฒ„๋ธ”์ •๋ ฌ ๊ตฌํ˜„ํ•˜๊ธฐ

๋ฒ„๋ธ”์ •๋ ฌ์€ ๋‘ ์ธ์ ‘ํ•œ ์›์†Œ๋ฅผ ๊ฒ€์‚ฌํ•˜์—ฌ ์ •๋ ฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋งํ•ฉ๋‹ˆ๋‹ค. ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” ๋А๋ฆฌ์ง€๋งŒ ์ฝ”๋“œ๊ฐ€ ๋‹จ์ˆœํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ž์ฃผ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

์•„๋ž˜ ์ฝ”๋“œ์˜ ๋นˆ ์นธ์„ ์ฑ„์›Œ ๋ฒ„๋ธ” ์ •๋ ฌ์„ ์™„์„ฑํ•ด ๋ด…์‹œ๋‹ค.

function bubble(arr) {
  let result = arr.slice(); 
  ////์›๋ณธ ๋ฐฐ์—ด๊ฑด๋“œ๋ฆฌ์ง€์•Š๊ณ  ๋ณต์ œ๋ณธ์„๋งŒ๋“ค์–ด result์—๋‹ค ์ €์žฅํ•จ

  for (let i = 0; i < result.length - 1; i++) {              --1๋ฒˆ
    for (let j = 0; j < result.length - i; j++) {            --2๋ฒˆ
      if (result[j] > result[j + 1]) {
        let value = result[j];
        result[j] = result[j+1];
        result[j+1] = value;
      }
    }
  }
  return result;
}

const items = "9 5 1 2 6 7".split(' ').map((n) => {
  return parseInt(n, 10);
});

console.log(bubble(items));
==> [1,2,5,6,7,9]

--1๋ฒˆ์—์„œ ์™œ result.length - 1์ด๋ƒ๋ฉด
์˜ˆ๋ฅผ๋“ค์–ด [5,3,2,4,1]์„ ์ฒซ๋ฒˆ์งธ์›์†Œ๋ถ€ํ„ฐ ๋‚˜๋จธ์ง€์›์†Œ๋“ค๊ณผ ๋น„๊ตํ• ๋•Œ
3 5 2 4 1
3 2 5 4 1
3 2 4 5 1
3 2 4 1 5

์ด๋ ‡๊ฒŒ ํ•œ ์›์†Œ๋Š” ์ด 4๋ฒˆ ๋น„๊ตํ•˜๊ฒŒ๋จ. ๊ทธ๋ž˜์„œ result.length-1

--2๋ฒˆ์—์„œ j < result.length - i์€
์™œ i๋ฅผ ๋นผ๋ƒ๋ฉด, i๊ฐ€ 0์ผ๋•Œ ์ˆซ์žํ•˜๋‚˜๊ฐ€ ์˜ฌ๋ฐ”๋ฅธ ์ž๋ฆฌ๋กœ ์ •๋ ฌ๋˜๋ฏ€๋กœ i๊ฐ€ i++๋ ๋•Œ๋งˆ๋‹ค i๋ฅผ ๋บŒ์œผ๋กœ์จ ๊ณ„์‚ฐ์„ ์ค„์ด๊ฒŒ๋˜๋Š”๊ฒƒ

j < result.length - i -1 ๋กœ ๋Œ€์ฒด๊ฐ€๋Šฅํ•œ๋ฐ, ์šฐ์„  j < result.length - i๋จผ์ € ์‚ดํŽด๋ณด์ž

i๊ฐ€ 0์ผ๋•Œ, j๊ฐ€ 0๋ถ€ํ„ฐ 4๊นŒ์ง€ ๋ˆ๋‹ค.
j๊ฐ€ 4์ผ๋•Œ

const result = [5,3,2,4,1]

if (result[j] > result[j + 1]) {
        let value = result[j];
        result[j] = result[j+1];
        result[j+1] = value;
      }

result[4] > result [5] ์—์„œ result[5]๊ฐ€ ์—†์œผ๋ฏ€๋กœ, false์ด๊ธฐ๋•Œ๋ฌธ์— if๋ฌธ์ด ์‹คํ–‰๋˜์ง€์•Š์Œ. ์ฆ‰, ๊ฒฐ๊ณผ์—๋Š” ์•„๋ฌด๋Ÿฐ ์˜ํ–ฅ์„๋ผ์น˜์ง€์•Š์ง€๋งŒ, ์ฐ์ฐํ•˜๋‹ค๋ฉด
j < result.length - i -1๋ผ๊ณ  ๊ณ ์น˜์ž.

profile
๐Ÿ‘ฉโ€๐Ÿ’ป์•ˆ๋…•ํ•˜์„ธ์š”๐ŸŒž

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