728x90
문자열 알고리즘을 풀다가 알게된 split(), join()의 문자열 활용법
string.split(separator, limit)
: 문자열을 배열로 반환하는 split 함수
array.join([separator])
: 배열의 모든 요소를 연결해 하나의 문자열로 만드는 join 함수
한 마디로 split은 문자열을 배열로 나누고, join은 배열을 문자열로 이어붙인다.
내가 만났던 백준 문제로 예시를 들어보자.
const alphabet = ["c=", "c-", "dz=", "d-", "lj", "nj", "s=", "z="]
문자열1: ljes=njak
문자열2: ddz=z=
문자열3: nljj
알파벳 배열과 문자열들이 주어진다.
각 문자열과 알파벳을 비교하여 동일한 문자는 한개의 문자로 치환 할 경우, 치환한 뒤의 문자열의 갯수를 맞추는 문제였다.
처음에는 for문을 돌려서 해당하는 문자가 포함될 경우 replace 해주는 방식으로 풀었는데 생각처럼 잘 되지 않아서 많이 고민 했던 것 같다.
하지만 위의 코드를 split과 join을 사용해서 푼다면 간결한 코드로 끝낼 수 있다.
const alphabet = ["c=", "c-", "dz=", "d-", "lj", "nj", "s=", "z="];
let word = input;
for (let i = 0; i < alphabet.length; i++) {
word = word.split(alphabet[i]).join("*");
}
console.log(word);
문자열에 alphabet에 해당하는 단어가 나타나면 *로 치환해주는 코드이다.
글자 갯수에 상관 없이 *하나로 치환이 되어서 결과론적으로 내가 원하는 치환된 후의 문자열의 길이를 가져올 수 있게된다.
여기서 주의할점은 join()없이 split() 함수만 사용해서 찍어볼 경우엔 콘솔창에
TypeError: word.split is not a function 라고 타입 에러를 뱉어낸다.
즉, .split().join()을 같이 써야 내가 원하는 방식의 답을 얻을 수 있었다.
나도 저런 에러가 나오는건 알고 싶지 않았다. 😓
728x90
'FRONTEND > Javascript' 카테고리의 다른 글
[Javascript] every()와 some() (0) | 2024.01.03 |
---|---|
[JS] 형변환 Number()와 parseInt()의 차이 (1) | 2023.11.29 |
[JS] UUID로 고유값 생성하기 (0) | 2023.08.16 |
[JS] 일반 함수와 화살표 함수의 차이 (0) | 2023.05.17 |
[JS] 심볼(Symbol) 자료형 (0) | 2023.04.19 |