Illie

[JS] splice... 왜 내 생각대로 안움직일까 본문

JAVASCRIPT/자바스크립트

[JS] splice... 왜 내 생각대로 안움직일까

(*ᴗ͈ˬᴗ͈)ꕤ*.゚ 2023. 8. 27. 11:43

개요

난 요즘 프로그래머스에서 알고리즘 문제를 풀고 있다.

 

사실 이전부터 알고리즘 공부를 항상 하다가 포기했었는데,,,

조금 강제성을 가질 필요가 있어서 알고리즘 스터디에 들어갔다

 

알고리즘 문제를 풀다보면 

내가 이것도 모른다고? 혹은 못푼다고?

내가 이 함수를 제대로 이해하고 있던게 아닌가? 

왜 늘 내 예상과 다르게 흘러갈까

뭐이런 생각과 자괴감과 내 자신에 대한 실망과...ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ

오늘 하루 찢었다

난리난다

뭐 이런 생각과 뿌듯함과 함께 어깨가 하늘까지 치솟는다

 

지금와서 글을 쓰면서 생각하는건데,

알고리즘은 내 정신에 좋지 않은거 같네

본문

- splice 내가 뭘 잘못알고있는 걸까

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

알고리즘 스터디에서 푸는 문제와는 별개로, 

문자열 뒤집기부터 차근차근 풀고 있는데

이 문제가 좀 말썽이다.

 

문제 설명

문자열 my_string, overwrite_string, 정수 s가 주어집니다.
문자열 my_string의 인덱스 s부터 overwrite_string의 길이만큼을
문자열 overwrite_string으로 바꾼 문자열을 return 하는
solution 함수를 작성

 

보자마자 생각했다 splice로 하면 되구나

 

#1. chaining으로 문제 풀기

// my_string: "He11oWor1d"
// overwrite_string: "lloWorl"
// s: 2
// result: 

function solution(my_string, overwrite_string, s) {
  const a = my_string
    .split("")
    .splice(s, overwrite_string.length, overwrite_string);

  return a.join("");
}

// 예상 결과 값: "HelloWorld"
// 실제 결과 값: "11oWor1"

 

#2. 구분하여 문제 풀기

// my_string: "He11oWor1d"
// overwrite_string: "lloWorl"
// s: 2
// result: 

function solution(my_string, overwrite_string, s) {
  const a = my_string.split("");
  a.splice(s, overwrite_string.length, overwrite_string);

  return a.join('');
}

// 예상 결과 값: "HelloWorld"
// 실제 결과 값: "HelloWorld"

큰일 났다.

왜 다른 결과가 나오는지 이해할 수 없다.

해결

https://stackoverflow.com/questions/70229464/how-to-chain-two-splice-methods-in-javascript

 

How to chain two splice methods in Javascript?

In the following example, splice().splice() didn't work. What am I missing? How can I chain two splice methods in a single line? Thank you for any advice! function test() { var data = [0,1,2,...

stackoverflow.com

splice 자체가 잘라낸 배열을 리턴한다고 한다. 

그래서 chaining으로 사용하면 예상한 것과 다르게 작동한다고 한다.

결론

알고리즘 문제를 풀다보면

모호했던 것들을 확실한 개념으로 만들어준다

 

실력향상에 아주 좋다!

 

 

 

 

 

'JAVASCRIPT > 자바스크립트' 카테고리의 다른 글

[JS] 클로저  (0) 2023.05.29
JS. 객체의 키 값을 활용하는 방법  (1) 2023.03.19
JS. 타입검사  (0) 2023.03.04
JS. every / some 개념  (0) 2022.05.01
JS. 테트리스에 시간 추가하기  (0) 2022.04.29
Comments