๐ŸŸฃ ์˜ค๋Š˜์˜ ๋ฌธ์ œ ํšŒ๊ณ 

๊น€ํƒœ์šฑยท2023๋…„ 3์›” 27์ผ
0
post-thumbnail

๐Ÿง ์˜ค๋Š˜์˜ ๋ฌธ์ œ ํ•ฅ์ง #1


[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] Lv1: ๊ฐ€์šด๋ฐ ๊ธ€์ž ๊ฐ€์ ธ์˜ค๊ธฐ

๋ฌธ์ œ ์„ค๋ช…
๋‹จ์–ด s์˜ ๊ฐ€์šด๋ฐ ๊ธ€์ž๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜, solution์„ ๋งŒ๋“ค์–ด ๋ณด์„ธ์š”. ๋‹จ์–ด์˜ ๊ธธ์ด๊ฐ€ ์ง์ˆ˜๋ผ๋ฉด ๊ฐ€์šด๋ฐ ๋‘๊ธ€์ž๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

์ œํ•œ์‚ฌํ•ญ

  • s๋Š” ๊ธธ์ด๊ฐ€ 1 ์ด์ƒ, 100์ดํ•˜์ธ ์ŠคํŠธ๋ง์ž…๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ

sreturn
"abcde""c"
"qwer""w,e"

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

function solution(s) {
  var sampleValue = Math.floor(s.length / 2);
  var answer = "";
  // ๋‹จ์–ด s์˜ ๊ฐ€์šด๋ฐ ๊ธ€์ž๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜,
  // ๋‹จ์–ด์˜ ๊ธธ์ด๊ฐ€ ์ง์ˆ˜๋ผ๋ฉด ๊ฐ€์šด๋ฐ ๋‘๊ธ€์ž๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.
  if (s.length % 2 != 1) answer = s.slice(sampleValue - 1, sampleValue + 1);
  else answer = s.slice(sampleValue, sampleValue + 1);
  return answer;
}

๊ตฌํ˜„ ์ ‘๊ทผ
1. ๊ฐ€์šด๋ฐ ๊ธ€์ž๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ธฐ ์œ„ํ•ด ํ•ด๋‹น ๋ฌธ์ž์—ด์˜ ๊ฐ€์šด๋ฐ ๊ฐ’์„ ์•Œ ์ˆ˜ ์žˆ๊ฒŒ sampleValue ๋ณ€์ˆ˜์— Math.floor ๋ฉ”์†Œ๋“œ๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฌธ์ž์—ด s์˜ ๊ธธ์ด๋ฅผ 2๋กœ ๋‚˜๋ˆˆ ๊ฐ’์„ ์ฃผ์—ˆ๋‹ค.
2. if์กฐ๊ฑด์„ ํ†ตํ•ด ์ง์ˆ˜, ํ™€์ˆ˜ ํŒ๋ณ„ ํ›„ answer์—๋‹ค slice ๋ฉ”์†Œ๋“œ๋ฅผ ์ด์šฉํ•˜์—ฌ ํ•ด๋‹น ๋ฌธ์ž์—ด์„ ์ถ”์ถœํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•จ์ˆ˜๋ฅผ ๊ตฌํ˜„ํ•จ.

๋ฌธ์ œ์ 
๋ฌด์–ธ๊ฐ€ ์ข€ ๋” ์ฝ”๋“œ๋ฅผ ๊น”๋”ํ•˜๊ฒŒ ๋งŒ๋“ค ์ˆœ ์—†์„๊นŒ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์˜ ํ’€์ด๋ฅผ ๋ณด์•˜๋Š”๋ฐ ์ธ์ƒ ๊นŠ์—ˆ๋˜ ๊ฒƒ์€,
๋ฌธ์ž์—ด์— ํŠน์ • ๊ธ€์ž์— ์ ‘๊ทผํ•˜๊ณ  ์‹ถ์„ ๋•Œ, ๋ฌธ์ž์—ด์˜ [์ธ๋ฑ์Šค]๋ฅผ ๋„ฃ๊ฑฐ๋‚˜, (์ธ๋ฑ์Šค) ๊ฐ’์„ ๋„ฃ์œผ๋ฉด ์›ํ•˜๋Š” ๊ธ€์ž๋ฅผ ์ถ”์ถœํ•  ์ˆ˜ ๊ฐ€ ์žˆ์—ˆ๋‹ค.
(์•„๋ž˜ ์ถœ์ฒ˜: ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ธํฌ)


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

#1

function solution(s) {
    const mid = Math.floor(s.length/2);
    return s.length %2 === 1 ? s[mid] : s[mid-1]+s[mid];
}

ํ’€์ด
1. floor ๋ฐฉ์‹์€ ๋‚˜์™€ ๊ฐ™์ด ์ค‘๊ฐ„ ๊ฐ’์„ ๊ตฌํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ์‹์ธ ๊ฒƒ ๊ฐ™์•˜๊ณ 
2. ์‚ผํ•ญ์—ฐ์‚ฐ์ž์˜ ์กฐ๊ฑด์„ ํ†ตํ•ด์„œ ํ•ด๋‹นํ•˜๋Š” ํŠน์ • ๊ธ€์ž๋ฅผ ์–ป๊ธฐ ์œ„ํ•ด [ ]์•ˆ์— ๋‚˜๋ˆˆ ๋ณ€์ˆ˜๋ฅผ ํ• ๋‹นํ•˜์—ฌ ํ•จ์ˆ˜๋ฅผ ๊ตฌํ˜„ํ•œ ๊ฒƒ์ด ๋‚ด๊ฐ€ ์ƒ๊ฐํ–ˆ์„ ๋•Œ ๊ฐ€์žฅ ๊น”๋”ํ•œ ๊ฒƒ ๊ฐ™์•˜๋‹ค.

  1. ์ง์ˆ˜์ผ ๋•Œ ์กฐ๊ฑด์— ํ•„์š”ํ•œ ๊ฐ’์„ + ์—ฐ์‚ฐ์ž๋ฅผ ํ†ตํ•ด ๋ฌธ์ž์—ด์„ ๋ณ‘ํ•ฉํ•˜์—ฌ 2๊ฐœ๋ฅผ ์–ป์–ด๋‚ธ ๊ฒƒ ์—ญ์‹œ ๋‹ค๋ฆ„์— ํ™œ์šฉํ•  ๋•Œ ์ž˜ ์‚ฌ์šฉํ•˜๋ฉด ๋  ๊ฒƒ ๊ฐ™๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค.

๐Ÿง ์˜ค๋Š˜์˜ ๋ฌธ์ œ ํ•ฅ์ง #2

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] Lv1: ์ˆ˜๋ฐ•์ˆ˜๋ฐ•์ˆ˜๋ฐ•์ˆ˜๋ฐ•์ˆ˜๋ฐ•์ˆ˜?

๋ฌธ์ œ ์„ค๋ช…
๊ธธ์ด๊ฐ€ n์ด๊ณ , "์ˆ˜๋ฐ•์ˆ˜๋ฐ•์ˆ˜๋ฐ•์ˆ˜...."์™€ ๊ฐ™์€ ํŒจํ„ด์„ ์œ ์ง€ํ•˜๋Š” ๋ฌธ์ž์—ด์„ ๋ฆฌํ„ดํ•˜๋Š” ํ•จ์ˆ˜, solution์„ ์™„์„ฑํ•˜์„ธ์š”. ์˜ˆ๋ฅผ๋“ค์–ด n์ด 4์ด๋ฉด "์ˆ˜๋ฐ•์ˆ˜๋ฐ•"์„ ๋ฆฌํ„ดํ•˜๊ณ  3์ด๋ผ๋ฉด "์ˆ˜๋ฐ•์ˆ˜"๋ฅผ ๋ฆฌํ„ดํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

์ œํ•œ์‚ฌํ•ญ

  • n์€ ๊ธธ์ด 10,000์ดํ•˜์ธ ์ž์—ฐ์ˆ˜์ž…๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ

nreturn
3"์ˆ˜๋ฐ•์ˆ˜"
4"์ˆ˜๋ฐ•์ˆ˜๋ฐ•"

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

function solution(n) {
  var repeat = "์ˆ˜๋ฐ•";
  var answer = repeat.repeat(n).slice(0, n);
  return answer;
}

๊ตฌํ˜„ ์ ‘๊ทผ
1. ํ•ด๋‹น ๋ฌธ์ž์—ด์ด ๋ฐ˜๋ณต์„ ํ•ด์•ผํ•˜๋‹ˆ ๊ทธ๋งŒํผ ๋ฐ˜๋ณตํ•  ์ˆ˜ ์žˆ๊ฒŒ repeat ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•จ.
2. answer์—๋‹ค ํ•ด๋‹น ๋ฌธ์ž์—ด ๋งŒํผ ์ž˜๋ผ์ค€๋‹ค๋ฉด ์›ํ•˜๋Š” ๊ธธ์ด๋งŒํผ์˜ ๋ฐ˜๋ณต๋œ ๋ฌธ์ž์—ด์ด ๋ฐ˜ํ™˜ ๋จ.

ํ•™์Šต
substring() ๋ฉ”์†Œ๋“œ๋Š” string ๊ฐ์ฒด์˜ ์‹œ์ž‘ ์ธ๋ฑ์Šค๋กœ ๋ถ€ํ„ฐ ์ข…๋ฃŒ ์ธ๋ฑ์Šค ์ „ ๊นŒ์ง€ ๋ฌธ์ž์—ด์˜ ๋ถ€๋ถ„ ๋ฌธ์ž์—ด์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

slice() ๋ฉ”์†Œ๋“œ๋Š” ๋ฌธ์ž์—ด์˜ ์ผ๋ถ€๋ฅผ ์ถ”์ถœํ•˜๋ฉด์„œ ์ƒˆ๋กœ์šด ๋ฌธ์ž์—ด์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
๊ฐ™์€ ๋งฅ๋ฝ์ด์ง€๋งŒ substring ๋ฉ”์†Œ๋“œ๋„ ์ด์™€ ๊ฐ™์€ ๊ธฐ๋Šฅ์œผ๋กœ์จ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ์„ ์ธ์ง€ํ•˜๊ณ  ์žˆ์ž.


๐Ÿง ์˜ค๋Š˜์˜ ๋ฌธ์ œ ํ•ฅ์ง #3

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] Lv1: ๋‚ด์ 

๋ฌธ์ œ ์„ค๋ช…
๊ธธ์ด๊ฐ€ ๊ฐ™์€ ๋‘ 1์ฐจ์› ์ •์ˆ˜ ๋ฐฐ์—ด a, b๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค. a์™€ b์˜ ๋‚ด์ ์„ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”.

์ด๋•Œ, a์™€ b์˜ ๋‚ด์ ์€ a[0]b[0] + a[1]b[1] + ... + a[n-1]*b[n-1] ์ž…๋‹ˆ๋‹ค. (n์€ a, b์˜ ๊ธธ์ด)

์ œํ•œ์‚ฌํ•ญ

  • a, b์˜ ๊ธธ์ด๋Š” 1 ์ด์ƒ 1,000 ์ดํ•˜์ž…๋‹ˆ๋‹ค.
  • a, b์˜ ๋ชจ๋“  ์ˆ˜๋Š” -1,000 ์ด์ƒ 1,000 ์ดํ•˜์ž…๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ

abresult
[1,2,3,4][-3,-1,0,2]3
[-1,0,1][1,0,-1]-2

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

function solution(a, b) {
  var answer = [];
  for (let i = 0; i < a.length; i++) {
    answer.push(a[i] * b[i]);
  }
  return answer.reduce((a, c) => a + c, 0);
}

๊ตฌํ˜„ ์ ‘๊ทผ
1. ๊ฐ ์ธ์ž๋ณ„ ๋ฐฐ์—ด์„ ์ˆœํšŒํ•˜๋ฉฐ ๊ฐ™์€ ์ง๋ผ๋ฆฌ ๊ณฑ์„ ํ•ด์ค˜์•ผ ํ–ˆ๊ธฐ์— for์„ ํ†ตํ•ด ์ธ๋ฑ์Šค ๋ณ„๋กœ ๊ณฑ์„ ํ–ˆ์Œ.
2. ๊ณฑํ•œ ๊ฐ’์„ answer์— push
3. push๋œ ๋ฐฐ์—ด์„ reduce ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ๋ชจ๋‘ ๋”ํ•ด ์ฃผ์—ˆ๋‹ค.

๋ฌธ์ œ์ 
1. ๊ตณ์ด reduce๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•„๋„ ๊ฐ€๋Šฅํ•œ ์ˆœํšŒ์˜€๋‹ค.
for๋ฅผ ์‚ฌ์šฉํ•˜๋˜์ง€ reduce๋งŒ ์‚ฌ์šฉํ•˜๋˜์ง€ ๊ฐ€๋Šฅํ•œ ํ•จ์ˆ˜์˜€๋‹ค.

๋‹ค๋ฅธ ์‚ฌ๋žŒ ํ’€์ด๋ฅผ ๋ณด๋ฉด์„œ ์–ด๋–ค ๋ฌธ์ œ์˜€๋Š”์ง€ ์‚ดํŽด๋ณด์ž.

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


#1

function solution(a, b) {
    var sum = 0;
    for(var i=0; i<a.length; i++){
        sum += a[i]*b[i];
    }
    return sum;
}

ํ’€์ด
1. sum์—๋‹ค ๋”ํ•œ ๊ฐ’์„ ๋ฐ”๋กœ ํ• ๋‹นํ•˜๋ฉฐ ๋ฐฐ์—ด๋“ค์˜ ์ธ๋ฑ์Šค ์—˜๋ฆฌ๋จผํŠธ๋ฅผ ๊ณฑํ•œ ๊ฐ’์„ ์žฌํ• ๋‹น ํ•˜๋ฉด reduce๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•„๋„ ๋”ํ•œ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•  ์ˆ˜๊ฐ€ ์žˆ์—ˆ๋‹ค.

์ฆ‰, ๊ตณ์ด ํ•จ์ˆ˜๋ฅผ ๋” ์ ์šฉํ•  ํ•„์š”๊ฐ€ ์—†์—ˆ๋‹ค.

#2

function solution(a, b) {
    return a.reduce((acc, _, i) => acc += a[i] * b[i], 0);
}

ํ’€์ด
1. reduce๋งŒ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ์œ„์™€ ๊ฐ™์ด cur(ํ˜„์žฌ ๊ฐ’)์„ ์ œ์™ธํ•˜๊ณ  i(์ธ๋ฑ์Šค) ๋งŒ ์ˆœํšŒํ•˜์—ฌ ๋”ํ•œ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ์—ˆ์„ ๊ฒƒ์ด๋‹ค.

function solution(a, b) {
  var answer = a.reduce((a, _, i) => (a += a[i] * b[i]), 0);
  return answer;
}

๋ฌธ์ œ์ 
์œ„์˜ ํ•จ์ˆ˜๋ฅผ ๊ธฐ๋Šฅํ•˜๋ฉด NaN์ด ๋‚˜์˜ค๊ฒŒ ๋˜๋Š”๋ฐ ์™œ๊ทธ๋Ÿฐ์ง€ ์ดํ•ดํ•  ์ˆ˜๊ฐ€ ์—†์—ˆ์–ด์„œ gpt์—๊ฒŒ ๋ฌผ์–ด ๋ณด์•˜๋‹ค.

  1. reduce์˜ ์ธ์ž๋กœ ์„ ์–ธ๋œ ๋ณ€์ˆ˜ a์˜ ๊ฐ’์œผ๋กœ ๋จผ์ € ์ดˆ๊ธฐ ๊ฐ’ 0์ด ํ• ๋‹น ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์—
    ๋’ค์— ์—ฐ์‚ฐ๋˜์–ด์•ผ ํ•˜๋Š” a[i]์˜ ๊ฐ’์ด ์กด์žฌํ•˜์ง€ ์•Š์•„ undefined๊ฐ€ ๋œ ๊ฒƒ.

์ „๋‹ฌ ๋˜์–ด์•ผ ํ•˜๋Š” ๋ณ€์ˆ˜๋Š” ๋ฎ์–ด์”Œ์–ด์ง€์ง€ ์•Š๊ฒŒ ์ด๋ฆ„์„ ์ž˜ ์ž‘์„ฑํ•ด์•ผ ํ•  ๊ฒƒ.

profile
๋ฐฉ๋ฒ•์„ ์—ฐ๊ตฌํ•  ์ค„ ์•„๋Š” ๊ฐœ๋ฐœ์ž!

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