๐Ÿ’ป Programming/Algorithm

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค Lv. 0] ์ธ๋ฑ์Šค ๋ฐ”๊พธ๊ธฐ

Jiwon() 2023. 6. 25. 10:41

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํ’€์ด
์‚ฌ์šฉ ์–ธ์–ด ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ JavaScript JS

1. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค Lv. 0 ์ธ๋ฑ์Šค ๋ฐ”๊พธ๊ธฐ

1) ๋ฌธ์ œ ์„ค๋ช…

๋ฌธ์ž์—ด my_string๊ณผ ์ •์ˆ˜ num1, num2๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, my_string์—์„œ ์ธ๋ฑ์Šค num1๊ณผ ์ธ๋ฑ์Šค num2์— ํ•ด๋‹นํ•˜๋Š” ๋ฌธ์ž๋ฅผ ๋ฐ”๊พผ ๋ฌธ์ž์—ด์„ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด๋ณด์„ธ์š”.

 

2) ์ œํ•œ ์‚ฌํ•ญ

  • 1 < my_string์˜ ๊ธธ์ด < 100
  • 0 ≤ num1, num2 < my_string์˜ ๊ธธ์ด
  • my_string์€ ์†Œ๋ฌธ์ž๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.
  • num1 ≠ num2

 

3) ์ž…์ถœ๋ ฅ ์˜ˆ

my_string num1 num2 result
"hello" 1 2 "hlelo"
"i love you" 3 6 " i l veoyou"

 

 


2. ์‚ฌ์šฉํ•œ ๋ฉ”์„œ๋“œ: splice()

Array.prototype.splice()

splice() ๋ฉ”์„œ๋“œ๋Š” ๋ฐฐ์—ด์˜ ๊ธฐ์กด ์š”์†Œ๋ฅผ ์‚ญ์ œ ๋˜๋Š” ๊ต์ฒดํ•˜๊ฑฐ๋‚˜ ์ƒˆ ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ๋ฐฐ์—ด์˜ ๋‚ด์šฉ์„ ๋ณ€๊ฒฝํ•œ๋‹ค.

 

splice : (๋ฐง์ค„์˜ ๋‘ ๋์„ ํ•จ๊ป˜ ๊ผฌ์•„์„œ) ์ž‡๋‹ค

 

const months = ['Jan', 'March', 'April', 'June'];
months.splice(1, 0, 'Feb');
// Inserts at index 1
console.log(months);
// Expected output: Array ["Jan", "Feb", "March", "April", "June"]

months.splice(4, 1, 'May');
// Replaces 1 element at index 4
console.log(months);
// Expected output: Array ["Jan", "Feb", "March", "April", "May"]

 

// ๊ตฌ๋ฌธ
array.splice(start[, deleteCount[, item1[, item2[, ...]]]])

 

 

1) ๋งค๊ฐœ๋ณ€์ˆ˜

start

  • ๋ฐฐ์—ด์˜ ๋ณ€๊ฒฝ์„ ์‹œ์ž‘ํ•  index
  • ๋ฐฐ์—ด์˜ ๊ธธ์ด๋ณด๋‹ค ํฐ ๊ฐ’์ด๋ผ๋ฉด ์‹ค์ œ ์‹œ์ž‘ ์ธ๋ฑ์Šค๋Š” ๋ฐฐ์—ด์˜ ๊ธธ์ด๋กœ ์„ค์ •๋จ
  • ์Œ์ˆ˜์ธ ๊ฒฝ์šฐ ๋ฐฐ์—ด์˜ ๋์—์„œ๋ถ€ํ„ฐ ์š”์†Œ๋ฅผ ์„ธ์–ด๋‚˜๊ฐ„๋‹ค.(์›์  -1, ์ฆ‰ -n์ด๋ฉด ์š”์†Œ ๋์˜ n๋ฒˆ์งธ ์š”์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋ฉฐ array.length - n๋ฒˆ์งธ ์ธ๋ฑ์Šค์™€ ๊ฐ™์Œ)
  • ๊ฐ’์˜ ์ ˆ๋Œ€๊ฐ’์ด ๋ฐฐ์—ด์˜ ๊ธธ์ด ๋ณด๋‹ค ํฐ ๊ฒฝ์šฐ 0์œผ๋กœ ์„ค์ •๋จ

 

deleteCount

  • ๋ฐฐ์—ด์—์„œ ์ œ๊ฑฐํ•  ์š”์†Œ์˜ ์ˆ˜์ด๋ฉฐ, optionalํ•œ ๋งค๊ฐœ๋ณ€์ˆ˜
  • deleteCount๋ฅผ ์ƒ๋žตํ•˜๊ฑฐ๋‚˜ ๊ฐ’์ด array.length - start๋ณด๋‹ค ํฌ๋ฉด start๋ถ€ํ„ฐ์˜ ๋ชจ๋“  ์š”์†Œ๋ฅผ ์ œ๊ฑฐ
  • deleteCount๊ฐ€ 0 ์ดํ•˜๋ผ๋ฉด ์–ด๋–ค ์š”์†Œ๋„ ์ œ๊ฑฐํ•˜์ง€ ์•Š๊ณ , ์ด ๋•Œ ์ตœ์†Œํ•œ ํ•˜๋‚˜์˜ ์ƒˆ๋กœ์šด ์š”์†Œ๋ฅผ ์ง€์ •ํ•ด์•ผ ํ•จ

 

item1, item2, <em>...</em>

  • ๋ฐฐ์—ด์— ์ถ”๊ฐ€ํ•  ์š”์†Œ
  • ์•„๋ฌด ์š”์†Œ๋„ ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด splice()๋Š” ์š”์†Œ๋ฅผ ์ œ๊ฑฐํ•˜๊ธฐ๋งŒ ํ•จ

 

 

2) ๋ฐ˜ํ™˜ ๊ฐ’

  • ์ œ๊ฑฐํ•œ ์š”์†Œ๋ฅผ ๋‹ด์€ ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜
  • ํ•˜๋‚˜์˜ ์š”์†Œ๋งŒ ์ œ๊ฑฐํ•œ ๊ฒฝ์šฐ ๊ธธ์ด๊ฐ€ 1์ธ ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜
  • ์•„๋ฌด ๊ฐ’๋„ ์ œ๊ฑฐํ•˜์ง€ ์•Š์•˜์œผ๋ฉด ๋นˆ ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜

 

 


3. ๋‹ต์•ˆ

1) ๋‚˜์˜ ํ’€์ด

const solution = (my_string, num1, num2) => {
    const result = [...my_string]
    result.splice(num1, 1, my_string[num2])
    result.splice(num2, 1, my_string[num1])
    return result.join("")
}

 

2) ๋‹ค๋ฅธ ์‚ฌ๋žŒ์˜ ํ’€์ด

// ๊ตฌ์กฐ๋ถ„ํ•ดํ• ๋‹น
function solution(my_string, num1, num2) {
    my_string = my_string.split('');
    [my_string[num1], my_string[num2]] = [my_string[num2], my_string[num1]];
    return my_string.join('');
}