본문 바로가기
자기개발/TIL

o떼기 js

by 금화맘 2023. 7. 27.

프로그래머스에서 0 떼기라는 문제가 있다.

n_str이라는 문자열이 주어지는데 맨 앞에 0이 있으면 때고 0이 아닌 숫자가 나올때 까지 모든 앞의 0을 떼는 문제였다.

 

이걸 위해 나는 정규식을 이용해서 사용하는 방법을 떠올렸다.

아무래도 문자열이다 보니 그냥 문자열에서 0을 떼기만 하면 될 것만 같았다.

그래서 정규식을 사용하는? 설명하는 많은 블로그 중에 

https://inpa.tistory.com/entry/JS-%F0%9F%93%9A-%EC%A0%95%EA%B7%9C%EC%8B%9D-RegExp-%EB%88%84%EA%B5%AC%EB%82%98-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0-%EC%89%BD%EA%B2%8C-%EC%A0%95%EB%A6%AC#%EC%A0%84%ED%99%94%EB%B2%88%ED%98%B8_%ED%98%95%EC%8B%9D

 

📚 JavaScript 정규 표현식 문법 총정리 + 응용 예제

정규 표현식(Regular Expression) 정규식(Regular Expression)은 문자열에서 특정 내용을 찾거나 대체 또는 발췌하는데 사용된다. 대표적으로 입력칸에 전화번호나 이메일을 입력하라고 했을때 옳지 않은

inpa.tistory.com

이 블로그와 

https://velog.io/@sisofiy626/JavaScript-%EC%A0%95%EA%B7%9C%ED%91%9C%ED%98%84%EC%8B%9DRegExp%EC%9D%B4%EB%9E%80

 

[JavaScript] 정규표현식(RegExp)이란?

오늘은 문자열을 찾기 위해 사용되는 정규표현식에 대해서 다뤄보려고 합니다. 정규표현식(= Regular Expression)은 문자열에서 일부 문자열을 검색하거나 추출할 때 사용하며 RegExp, Regex라고 불리기

velog.io

이 블로그를 열심히 따라했다.

 

나는 프로그래머스에서 

let reg = //g를 먼저 정의 했고 검색을 시작했다. 위의 두개의 블로그 중 첫번째 블로그에서 [] 바깥의 ^는 문자열의 처음을 의미한다.라는 것을 보고 

'''   let reg = /^[0]/g을 했는데 결과로는 입력값이 0010 이면 010이 나왔다.

문자열의 처음이 0이니까 0이 하나인 경우만 해당되는 건가 해서 그 위에 0이 아닌 것까지를 나타내기 위해

''' let reg = /^[0\0+]/gi를 해봤다.

그래도 똑같이 010이 나왔다. 뭐가 문제인지 모르겠어서 두번째 블로그를 찾아 들어가 봤고,

일단 ^[0]은 작동하는데 그 이후의 식이 문제인 것 같아서 0이후에 같은 값이 나오는 것이란 것을 나타내는 *을 보게 됐고 적용해 봤다.

''' let reg = /^0*/gi

매우 잘 작동해고 제출해 성공할 수 있었다.

 

오늘도 수학적 머리를 사용하는 것 보다 하나씩 소거하거나 적용하면서 정규식에 익숙해 지는 느낌이 들었다.

그래도 시간적 여유가 없을 때엔 다른 방법을 찾는게 더 효율적 일 수 있겠다는 생각이 들었다.

차라리 배열로 변경해서 0을 잘라내는 방법이 더 낫지 않을 까 하고 다른 사람들의 풀이를 주의 깊게 살펴보았다.

 

'''String(Number(n_str)

로 한 사람들이 많았다.

코드를 처음 봤을 때 무슨 소리지? 했는데 생각보다 이렇게 작성한 사람들이 많았고 왜 number로 했다가 다시 string으로 하는 이유가 뭐지? 라고 했는데 문자열로 주어진 상태이기 때문에 숫자열과 문자열의 차이점을 활용한 거였다.

숫자는 0으로 시작할 수 없고 10 혹은 0.1 과 같은건 될 수 있지만 0010은 숫자로 그냥 10이기 때문이었다. 그래서 사람들이 10으로 바꿔서 하고 다시 문자열로 바꿔서 제출하는 거였다. 진짜 똑똑한 사람들이라 느꼈다.

이와 같은 의미로

'''+n_str + ""

로 한 사람들이 있었는데 이건 +를 통해서 문자를 숫자로 바꾸는 작업을 하고 위에 +""를 해서 문자열로 바꿔주는 식이었다. 

 

글고 내가 생각한 것과 완전 같지 않지만 비슷한 생각을 가진 코드가 있었는데 0이 아닌 숫자까지 찾아 그 숫자의 인덱스에서 slice를 해서 반환하는 코드엿다.

function solution(n_str) {
    for (let i=0; i<n_str.length; i++){
        if (n_str[i] !== "0") return n_str.slice(i)
    }
}

 

'자기개발 > TIL' 카테고리의 다른 글

홀짝에 따라 다른 값 반환하기 js  (0) 2023.07.28
js 문자열 바꿔서 찾  (0) 2023.07.27
홀수 vs 짝수 js  (0) 2023.07.25
l로만들기 js  (0) 2023.07.24
프로그래머스 js 배열비교하기  (0) 2023.07.22