๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

์นดํ…Œ๊ณ ๋ฆฌ ์—†์Œ

[Code Kata] ์„œ์šธ์—์„œ ๊น€์„œ๋ฐฉ ์ฐพ๊ธฐ - JavaScript

 

๐Ÿ“† 2024๋…„ 5์›” 22์ผ

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์ฝ”๋“œ์นดํƒ€ 24๋ฒˆ๋ฌธ์ œ - ์„œ์šธ์—์„œ ๊น€์„œ๋ฐฉ ์ฐพ๊ธฐ

https://school.programmers.co.kr/learn/courses/30/lessons/12919

 

 

 

โœ… ๋ฌธ์ œ์„ค๋ช…

Stringํ˜• ๋ฐฐ์—ด seoul์˜ element์ค‘ "Kim"์˜ ์œ„์น˜ x๋ฅผ ์ฐพ์•„, "๊น€์„œ๋ฐฉ์€ x์— ์žˆ๋‹ค"๋Š” String์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜, solution์„ ์™„์„ฑํ•˜์„ธ์š”. seoul์— "Kim"์€ ์˜ค์ง ํ•œ ๋ฒˆ๋งŒ ๋‚˜ํƒ€๋‚˜๋ฉฐ ์ž˜๋ชป๋œ ๊ฐ’์ด ์ž…๋ ฅ๋˜๋Š” ๊ฒฝ์šฐ๋Š” ์—†์Šต๋‹ˆ๋‹ค.

  • ์ œํ•œ์‚ฌํ•ญ

seoul์€ ๊ธธ์ด 1 ์ด์ƒ, 1000 ์ดํ•˜์ธ ๋ฐฐ์—ด์ž…๋‹ˆ๋‹ค.

seoul์˜ ์›์†Œ๋Š” ๊ธธ์ด 1 ์ด์ƒ, 20 ์ดํ•˜์ธ ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค.

"Kim"์€ ๋ฐ˜๋“œ์‹œ seoul ์•ˆ์— ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์ž…์ถœ๋ ฅ ์˜ˆ 1

["Jane", "Kim"] "๊น€์„œ๋ฐฉ์€ 1์— ์žˆ๋‹ค"

 

 

 

โœ ๋ฌธ์ œํ’€์ด

  1. ์ฒ˜์Œ ์‹œ๋„ํ•œ ์ฝ”๋“œ

์ผ๋‹จ ์ด๊ฒŒ ๋ฌด์Šจ ์†Œ๋ฆฐ์ง€ ์ดํ•ด๊ฐ€ ์•ˆ๋˜์„œ ๊ตฌ๊ธ€๋ง์„ ๋จผ์ € ํ•˜์˜€๋‹ค.

์™œ SEOUL ๊ฐ™์€ ์†Œ๋ฆฌ๋ฅผ ํ–ˆ๋Š”์ง€ ๋„์ €ํžˆ ใ…‹ใ…‹ ์ดํ•ด๊ฐ€ ์•ˆ๋˜์„œ ใ…‹ใ…‹ ์•Œ์•„๋ณด๋‹ˆ, ๋‹จ์ˆœํžˆ SEOUL์ด๋ผ๋Š” ๋ฐฐ์—ด์— [JANE, KIM] ์ด ๋“ค์–ด์žˆ๊ณ , ์ด ๋ฐฐ์—ด์˜ INDEX ์ค‘ 0๋ฒˆ์€ JANE, 1๋ฒˆ์€ KIM ์œผ๋กœ ๋˜์–ด์žˆ์–ด KIM ์„œ๋ฐฉ์€ 1๋ฒˆ์— ์žˆ๋”ฐ ๋ผ๊ณ  ์ถœ๋ ฅํ•˜๋ฉด ๋˜๋Š” ๊ฒƒ์ด์˜€๋‹ค.

function solution(seoul) {
  let answer = "";
  for (i = 0; i < seoul.length; i++) {
    if (seoul[i] === "kim") {
      return `KIM์„œ๋ฐฉ์€ ${i}์—์žˆ๋‹ค.`;
    }
  }
}
console.log(solution((SEOUL = ["jane", "jun", "jerry", "kim"])));
 

ํ•ด์„ค / ์žก์„ค

์šฐ์„  SEOUL์ด๋ผ๋Š” ๋ฐฐ์—ด์— jane jun jerry kim ์„ ๋„ฃ์—ˆ๋‹ค.

์ˆœ์„œ๋Œ€๋กœ 0๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜์—ฌ kim์€ 3๋ฒˆ์งธ์— ์žˆ๋‹ค

ํ•จ์ˆ˜ ์•ˆ์—์„œ for๋ฌธ์„ ๋Œ๋ ธ๊ณ , for๋ฌธ์˜ ํ•ด์„์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

i์˜ start๋Š” 0, i์˜ end๋Š” seoul๋ฐฐ์—ด์˜ element ๋งŒํผ, i๋Š” ๋งค ๋ฐ˜๋ณต๋งˆ๋‹ค +1

for๋ฌธ ๋‚ด๋ถ€์— if๋ฌธ์„ ๋งŒ๋“ค์–ด์„œ ๋งŒ์•ฝ seoul ๋ฐฐ์—ด์˜[i] ๋ฒˆ์งธ ๊ฐ€ kim ์ผ๊ฒฝ์šฐ return ์„ ํ•˜๊ณ  if๋ฌธ์„ ๋น ์ ธ๋‚˜๊ฐ„๋‹ค.

if๋ฌธ์€ ๋ฐฑํ‹ฑ์„ ์„ž์–ด์‚ฌ์šฉํ•˜์˜€๋‹ค.

 

 

 

โœ”๏ธ ์ฐธ๊ณ ํ•  ์ข‹์€ ์ฝ”๋“œ

function solution(seoul) {
    return "๊น€์„œ๋ฐฉ์€ " + seoul.indexOf('Kim') + "์— ์žˆ๋‹ค";
}
 

ํ•ด์„ค / ์žก์„ค

์ค ๋ผ ๊ฐ„๊ฒฐํ•˜๊ณ  ์Ž„๋ จ๋˜๊ฒŒ ๋งŒ๋“ ๊ฑฐ ๊ฐ™๋‹ค;

const solution = (seoul) => 
`๊น€์„œ๋ฐฉ์€ ${arr.findIndex(s => s === 'Kim')}์— ์žˆ๋‹ค`;
 

ํ•ด์„ค / ์žก์„ค

์ด๊ฑด ES6๋ฌธ๋ฒ•์— ์ƒˆ๋กœ์ด ์ถ”๊ฐ€๋œ findIndex ๋ผ๋Š” ๋ฉ”์†Œ๋“œ

๋” ๋ฏธ์นœ๋“ฏ์ด ๊ฐ„๊ฒฐํ•˜๋‹ค.

findIndex(testFn(element[, index[, array]])[, thisArg])
 
 

findIndex์˜ ๊ธฐ๋ณธ๊ตฌ๋ฌธ์€ ๋ณต์žกํ•ด ๋ณด์ด์ง€๋งŒ ์‚ฌ์šฉํ•˜๊ธฐ ํŽธ๋ฆฌํ•˜๋‹ค๊ณ  ํ•œ๋‹ค.

- testFn

testFn์€ ์š”์†Œ๊ฐ€ ๋ฐœ๊ฒฌ๋˜์—ˆ์Œ์„ ๋‚˜ํƒ€๋‚ด๋Š” true๋ฅผ ๋ฐ˜ํ™˜ํ•  ๋•Œ๊นŒ์ง€ ๋ฐฐ์—ด์˜ ๊ฐ ์š”์†Œ์— ๋Œ€ํ•ด ์‹คํ–‰ํ•˜๋Š” ํ•จ์ˆ˜

 

- testFn์€ ์„ธ ๊ฐ€์ง€ ์ธ์ˆ˜๋ฅผ ์‚ฌ์šฉ

element๋Š” ์ฒ˜๋ฆฌ ์ค‘์ธ ๋ฐฐ์—ด์˜ ํ˜„์žฌ ์š”์†Œ

index๋Š” ์ฒ˜๋ฆฌ ์ค‘์ธ ํ˜„์žฌ ์š”์†Œ์˜ ์ธ๋ฑ์Šค

๋ฐฐ์—ด์€ findIndex()๊ฐ€ ํ˜ธ์ถœ๋œ ๋ฐฐ์—ด

 

- thisArg

: thisArg๋Š” ์ฝœ๋ฐฑ์„ ์‹คํ–‰ํ•  ๋•Œ ์‚ฌ์šฉํ•  ์„ ํƒ์  ๊ฐ์ฒด

thisArg ์ธ์ˆ˜๋ฅผ ์ƒ๋žตํ•˜๋ฉด findIndex() ํ•จ์ˆ˜๋Š” undefined๋ฅผ ์‚ฌ์šฉ

: findIndex()๋Š” testFn์ด true๋กœ ๊ฐ•์ œ ๋ณ€ํ™˜๋˜๋Š” ๊ฐ’์ธ truthy ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•ญ๋ชฉ์„ ์ฐพ์„ ๋•Œ๊นŒ์ง€ ๋ฐฐ์—ด์˜ ๋ชจ๋“  ์š”์†Œ์— ๋Œ€ํ•ด testFn์„ ์‹คํ–‰

: findIndex()๊ฐ€ ๊ทธ๋Ÿฌํ•œ ์š”์†Œ๋ฅผ ์ฐพ์œผ๋ฉด ์ฆ‰์‹œ ์š”์†Œ์˜ ์ธ๋ฑ์Šค๋ฅผ ๋ฐ˜ํ™˜

 

 

๐Ÿ“ TIL

๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ๊ตฌ์กฐ๋งŒ ํ•˜๊ณ  ์žˆ๋Š”๋ฐ, ๋‹ค๋ฅธ์‚ฌ๋žŒ๋“ค์˜ ๊ฐ„๊ฒฐํ•˜๊ณ  ์„ธ๋ จ๋œ ์ฝ”๋“œ๋ฅผ ๋ณด๋‹ˆ ๋ฌด์„œ์›Œ์กŒ๋‹ค.

findIndex ๋ผ๋Š” ๋ฉ”์†Œ๋“œ๋ฅผ ์ƒˆ๋กญ๊ฒŒ ๋ฐฐ์› ๋‹ค.