๐Ÿ’ป Programming/Algorithm

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค Lv. 0] ๋ฆฌ์ŠคํŠธ ์ž๋ฅด๊ธฐ

2023. 8. 8. 16:39
๋ชฉ์ฐจ
  1. 1. ๋ฆฌ์ŠคํŠธ ์ž๋ฅด๊ธฐ
  2. 1) โ“ ๋ฌธ์ œ ์„ค๋ช…
  3. 2) ๐Ÿšซ ์ œํ•œ ์‚ฌํ•ญ
  4. 3) โœ… ์ž…์ถœ๋ ฅ ์˜ˆ
  5. 2. ์‚ฌ์šฉํ•œ ๋ฉ”์„œ๋“œ: slice()
  6. Array.prototype.slice()
  7. 1) ๋งค๊ฐœ๋ณ€์ˆ˜
  8. 2) ๋ฐ˜ํ™˜ ๊ฐ’
  9. 3. ๋‹ต์•ˆ
  10. 1) ๋‚˜์˜ ํ’€์ด
  11. 2) ๋‹ค๋ฅธ ์‚ฌ๋žŒ์˜ ํ’€์ด

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

1. ๋ฆฌ์ŠคํŠธ ์ž๋ฅด๊ธฐ

1) โ“ ๋ฌธ์ œ ์„ค๋ช…

์ •์ˆ˜ n๊ณผ ์ •์ˆ˜ 3๊ฐœ๊ฐ€ ๋‹ด๊ธด ๋ฆฌ์ŠคํŠธ slicer ๊ทธ๋ฆฌ๊ณ  ์ •์ˆ˜ ์—ฌ๋Ÿฌ ๊ฐœ๊ฐ€ ๋‹ด๊ธด ๋ฆฌ์ŠคํŠธ num_list๊ฐ€ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค. slicer์— ๋‹ด๊ธด ์ •์ˆ˜๋ฅผ ์ฐจ๋ก€๋Œ€๋กœ a, b, c๋ผ๊ณ  ํ•  ๋•Œ, n์— ๋”ฐ๋ผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด num_list๋ฅผ ์Šฌ๋ผ์ด์‹ฑ ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

  • n = 1 : num_list์˜ 0๋ฒˆ ์ธ๋ฑ์Šค๋ถ€ํ„ฐ b๋ฒˆ ์ธ๋ฑ์Šค๊นŒ์ง€
  • n = 2 : num_list์˜ a๋ฒˆ ์ธ๋ฑ์Šค๋ถ€ํ„ฐ ๋งˆ์ง€๋ง‰ ์ธ๋ฑ์Šค๊นŒ์ง€
  • n = 3 : num_list์˜ a๋ฒˆ ์ธ๋ฑ์Šค๋ถ€ํ„ฐ b๋ฒˆ ์ธ๋ฑ์Šค๊นŒ์ง€
  • n = 4 : num_list์˜ a๋ฒˆ ์ธ๋ฑ์Šค๋ถ€ํ„ฐ b๋ฒˆ ์ธ๋ฑ์Šค๊นŒ์ง€ c ๊ฐ„๊ฒฉ์œผ๋กœ

์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์Šฌ๋ผ์ด์‹ฑํ•œ ๋ฆฌ์ŠคํŠธ๋ฅผ returnํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”.

 

2) ๐Ÿšซ ์ œํ•œ ์‚ฌํ•ญ

  • n ์€ 1, 2, 3, 4 ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค.
  • slicer์˜ ๊ธธ์ด = 3
  • slicer์— ๋‹ด๊ธด ์ •์ˆ˜๋ฅผ ์ฐจ๋ก€๋Œ€๋กœ a, b, c๋ผ๊ณ  ํ•  ๋•Œ
    • 0 โ‰ค a โ‰ค b โ‰ค num_list์˜ ๊ธธ์ด - 1
    • 1 โ‰ค c โ‰ค 3
  • 5 โ‰ค num_list์˜ ๊ธธ์ด โ‰ค 30
  • 0 โ‰ค num_list์˜ ์›์†Œ โ‰ค 100

 

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

n slicer num_list result
3 [1, 5, 2] [1, 2, 3, 4, 5, 6, 7, 8, 9] [2, 3, 4, 5, 6]
4 [1, 5, 2] [1, 2, 3, 4, 5, 6, 7, 8, 9] [2, 4, 6]

 

 


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

Array.prototype.slice()

`slice()` ๋ฉ”์„œ๋“œ๋Š” ๋ฌธ์ž์—ด ๋˜๋Š” ๋ฐฐ์—ด์—์„œ ํŠน์ • ๋ฒ”์œ„์˜ ์š”์†Œ๋“ค์„ ๋ณต์‚ฌํ•˜์—ฌ ์ƒˆ๋กœ์šด ๋ฌธ์ž์—ด ๋˜๋Š” ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

 

// ์˜ˆ์ œ ์ถœ์ฒ˜: MDN web docs - Array.prototype.slice()

const animals = ['ant', 'bison', 'camel', 'duck', 'elephant'];

console.log(animals.slice(2));
// Expected output: Array ["camel", "duck", "elephant"]

console.log(animals.slice(2, 4));
// Expected output: Array ["camel", "duck"]

console.log(animals.slice(1, 5));
// Expected output: Array ["bison", "camel", "duck", "elephant"]

console.log(animals.slice(-2));
// Expected output: Array ["duck", "elephant"]

console.log(animals.slice(2, -1));
// Expected output: Array ["camel", "duck"]

console.log(animals.slice());
// Expected output: Array ["ant", "bison", "camel", "duck", "elephant"]

 

// ๊ตฌ๋ฌธ
arr.slice([begin[, end]])

 

 

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

begin

  • 0์„ ์‹œ์ž‘์œผ๋กœ ํ•˜๋Š” ์ถ”์ถœ ์‹œ์ž‘ ์š”์†Œ์— ๋Œ€ํ•œ ์ธ๋ฑ์Šค๋ฅผ ์˜๋ฏธ
  • ์Œ์ˆ˜ ์ธ๋ฑ์Šค๋Š” ๋ฐฐ์—ด์˜ ๋์—์„œ๋ถ€ํ„ฐ์˜ ๊ธธ์ด๋ฅผ ๋‚˜ํƒ€๋ƒ„
    • ex) slice(-2)๋Š” ๋ฐฐ์—ด์—์„œ ๋งˆ์ง€๋ง‰ ๋‘๊ฐœ์˜ ์—˜๋ฆฌ๋จผํŠธ๋ฅผ ์ถ”์ถœ

 

end

  • ์ถ”์ถœ์„ ์ข…๋ฃŒํ•  0 ๊ธฐ์ค€ ์ธ๋ฑ์Šค
  • slice๋Š” end ์ธ๋ฑ์Šค๋ฅผ ์ œ์™ธํ•˜๊ณ  ์ถ”์ถœํ•œ๋‹ค.
    • ex) slice(1, 4)๋Š” ๋‘ ๋ฒˆ์งธ ์š”์†Œ๋ถ€ํ„ฐ ๋„ค ๋ฒˆ์งธ ์š”์†Œ๊นŒ์ง€ ์ถ”์ถœ
  • end๊ฐ€ ์ƒ๋žต๋˜๋ฉด slice()๋Š” ๋ฐฐ์—ด์˜ ๋(arr.length)๊นŒ์ง€ ์ถ”์ถœ
  • end๊ฐ’์ด ๋ฐฐ์—ด์˜ ๊ธธ์ด๋ณด๋‹ค ํฌ๋ฉด, slice()๋Š” begin๋ถ€ํ„ฐ ๋ฐฐ์—ด์˜ ๋(arr.length)๊นŒ์ง€ ์ถ”์ถœ

 

 

2) ๋ฐ˜ํ™˜ ๊ฐ’

  • ์ถ”์ถœํ•œ ์š”์†Œ๋ฅผ ํฌํ•จํ•œ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด
  • slice()๋Š” ์›๋ณธ์„ ๋Œ€์ฒดํ•˜์ง€ ์•Š์œผ๋ฉฐ, ์›๋ณธ ๋ฐฐ์—ด์—์„œ ์š”์†Œ์˜ ์–•์€ ๋ณต์‚ฌ๋ณธ์„ ๋ฐ˜ํ™˜

 

 


3. ๋‹ต์•ˆ

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

const solution = (n, slicer, num_list) => {
    let answer = [];
    if (n===1) {
        answer = num_list.slice(0, slicer[1]+1)
    } else if (n===2) {
        answer = num_list.slice(slicer[0])
    } else if (n===3) {
        answer = num_list.slice(slicer[0], slicer[1]+1)
    } else {
        answer = num_list.slice(slicer[0], slicer[1]+1).filter((_, i) => i%slicer[2]===0)
    }
    return answer;
}
  • ์ฒ˜์Œ์—” slice ๋Œ€์‹  splice๋ฅผ ์ผ๋Š”๋ฐ ์—๋Ÿฌ๊ฐ€ ๋‚˜์„œ ์™œ์ง€ ํ–ˆ๋Š”๋ฐ splice๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์›๋ณธ num_list ๋ฐฐ์—ด์ด ๋ณ€๊ฒฝ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค์Œ ์ผ€์ด์Šค์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜๊ฐ€ ์—†๋‹ค.
  • ์–•์€ ๋ณต์‚ฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” slice ๋ฉ”์„œ๋“œ๋กœ ํ’€์ด๋ฅผ ์ž‘์„ฑํ•˜์˜€๋”๋‹ˆ ์‰ฝ๊ฒŒ ํ†ต๊ณผํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

 

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

function solution(n, slicer, num_list) {
    let [a, b, c] = [...slicer];

    switch(n) {
        case 1:
            return num_list.slice(0, b + 1);
        case 2:
            return num_list.slice(a);
        case 3:
            return num_list.slice(a, b + 1);
        case 4:
            return num_list.slice(a, b + 1).filter((_, idx) => !(idx % c));
    }
}
  • let [a, b, c] = [...slicer] : slicer์˜ ๊ฐ ์š”์†Œ๋ฅผ a, b, c ๋ณ€์ˆ˜์— ํ• ๋‹น
  • !(idx % c) : ๋‚˜๋จธ์ง€๊ฐ€ 0์ด๋ฉด false์ด๋ฏ€๋กœ ํ•„ํ„ฐ๋ง ๋˜๋„๋ก

slicer์˜ ์š”์†Œ๋ฅผ ๋ณ€์ˆ˜๋กœ ์„ค์ •ํ•˜๊ณ , switch๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ€๋…์„ฑ ๋ฉด์—์„œ ๋” ์ข‹์€ ํ’€์ด๋ฐฉ๋ฒ•์ธ ๊ฒƒ ๊ฐ™๋‹ค.

 

 

 

 

 

 

์ €์ž‘์žํ‘œ์‹œ (์ƒˆ์ฐฝ์—ด๋ฆผ)

'๐Ÿ’ป Programming > Algorithm' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค Lv. 1] ๋ถ€์กฑํ•œ ๊ธˆ์•ก ๊ณ„์‚ฐํ•˜๊ธฐ  (0) 2023.08.16
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค Lv. 0] ํŠน์ˆ˜๋ฌธ์ž ์ถœ๋ ฅํ•˜๊ธฐ  (0) 2023.08.13
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค Lv. 0] ์ง์ˆ˜๋Š” ์‹ซ์–ด์š”  (0) 2023.08.03
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค Lv. 0] 369๊ฒŒ์ž„  (0) 2023.08.02
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค Lv. 1] ์ฝœ๋ผ์ธ  ์ถ”์ธก  (0) 2023.08.02
  1. 1. ๋ฆฌ์ŠคํŠธ ์ž๋ฅด๊ธฐ
  2. 1) โ“ ๋ฌธ์ œ ์„ค๋ช…
  3. 2) ๐Ÿšซ ์ œํ•œ ์‚ฌํ•ญ
  4. 3) โœ… ์ž…์ถœ๋ ฅ ์˜ˆ
  5. 2. ์‚ฌ์šฉํ•œ ๋ฉ”์„œ๋“œ: slice()
  6. Array.prototype.slice()
  7. 1) ๋งค๊ฐœ๋ณ€์ˆ˜
  8. 2) ๋ฐ˜ํ™˜ ๊ฐ’
  9. 3. ๋‹ต์•ˆ
  10. 1) ๋‚˜์˜ ํ’€์ด
  11. 2) ๋‹ค๋ฅธ ์‚ฌ๋žŒ์˜ ํ’€์ด
'๐Ÿ’ป Programming/Algorithm' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค Lv. 1] ๋ถ€์กฑํ•œ ๊ธˆ์•ก ๊ณ„์‚ฐํ•˜๊ธฐ
  • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค Lv. 0] ํŠน์ˆ˜๋ฌธ์ž ์ถœ๋ ฅํ•˜๊ธฐ
  • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค Lv. 0] ์ง์ˆ˜๋Š” ์‹ซ์–ด์š”
  • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค Lv. 0] 369๊ฒŒ์ž„
Jiwon()
Jiwon()
Jiwon()
jiwondev.log
Jiwon()
์ „์ฒด
์˜ค๋Š˜
์–ด์ œ
  • ์ „์ฒด๋ณด๊ธฐ (86)
    • โœ๏ธ What I Learned (52)
      • TIL (41)
      • ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ… (8)
    • ๐Ÿ’ป Programming (31)
      • Algorithm (12)
      • React (1)
      • JS, TS (7)
      • HTML, CSS (7)
      • ๊ธฐํƒ€ (4)
    • ๐Ÿ–Š๏ธ ์ผ๊ธฐ (3)
      • ์ผ์ƒ๊ธฐ๋ก (2)

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ํ™ˆ
  • ํƒœ๊ทธ
  • ๋ฐฉ๋ช…๋ก

๊ณต์ง€์‚ฌํ•ญ

์ธ๊ธฐ ๊ธ€

ํƒœ๊ทธ

  • ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ
  • React
  • SSR
  • ์ฝ”๋”ฉ
  • ํ”„๋ก ํŠธ์—”๋“œ
  • javascript
  • React-Hook-Form
  • HTML
  • nextjs
  • TypeScript
  • tailwindcss
  • slice
  • ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ…
  • ํด๋ฆฐ์ฝ”๋“œ
  • ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค
  • ๋‚ด์ผ๋ฐฐ์›€์บ ํ”„
  • transition
  • Firebase
  • ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ
  • Next.js
  • Til
  • Prisma
  • ๋ฆฌ์•กํŠธ
  • ์•Œ๊ณ ๋ฆฌ์ฆ˜
  • recoil
  • css
  • Redux
  • ChatGPT
  • ์›น๊ฐœ๋ฐœ
  • reduxtoolkit

์ตœ๊ทผ ๋Œ“๊ธ€

์ตœ๊ทผ ๊ธ€

hELLO ยท Designed By ์ •์ƒ์šฐ.
Jiwon()
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค Lv. 0] ๋ฆฌ์ŠคํŠธ ์ž๋ฅด๊ธฐ
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”

๋‹จ์ถ•ํ‚ค

๋‚ด ๋ธ”๋กœ๊ทธ

๋‚ด ๋ธ”๋กœ๊ทธ - ๊ด€๋ฆฌ์ž ํ™ˆ ์ „ํ™˜
Q
Q
์ƒˆ ๊ธ€ ์“ฐ๊ธฐ
W
W

๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๊ธ€

๊ธ€ ์ˆ˜์ • (๊ถŒํ•œ ์žˆ๋Š” ๊ฒฝ์šฐ)
E
E
๋Œ“๊ธ€ ์˜์—ญ์œผ๋กœ ์ด๋™
C
C

๋ชจ๋“  ์˜์—ญ

์ด ํŽ˜์ด์ง€์˜ URL ๋ณต์‚ฌ
S
S
๋งจ ์œ„๋กœ ์ด๋™
T
T
ํ‹ฐ์Šคํ† ๋ฆฌ ํ™ˆ ์ด๋™
H
H
๋‹จ์ถ•ํ‚ค ์•ˆ๋‚ด
Shift + /
โ‡ง + /

* ๋‹จ์ถ•ํ‚ค๋Š” ํ•œ๊ธ€/์˜๋ฌธ ๋Œ€์†Œ๋ฌธ์ž๋กœ ์ด์šฉ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ํ‹ฐ์Šคํ† ๋ฆฌ ๊ธฐ๋ณธ ๋„๋ฉ”์ธ์—์„œ๋งŒ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.