Illie
[JS] splice... 왜 내 생각대로 안움직일까 본문
개요
난 요즘 프로그래머스에서 알고리즘 문제를 풀고 있다.
사실 이전부터 알고리즘 공부를 항상 하다가 포기했었는데,,,
조금 강제성을 가질 필요가 있어서 알고리즘 스터디에 들어갔다
알고리즘 문제를 풀다보면
내가 이것도 모른다고? 혹은 못푼다고?
내가 이 함수를 제대로 이해하고 있던게 아닌가?
왜 늘 내 예상과 다르게 흘러갈까
뭐이런 생각과 자괴감과 내 자신에 대한 실망과...ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
오늘 하루 찢었다
난리난다
뭐 이런 생각과 뿌듯함과 함께 어깨가 하늘까지 치솟는다
지금와서 글을 쓰면서 생각하는건데,
알고리즘은 내 정신에 좋지 않은거 같네
본문
- 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 |